Merge "Disallow modifying java.lang.String"
diff --git a/runtime/openjdkjvmti/ti_redefine.cc b/runtime/openjdkjvmti/ti_redefine.cc
index 60ce898..eefd012 100644
--- a/runtime/openjdkjvmti/ti_redefine.cc
+++ b/runtime/openjdkjvmti/ti_redefine.cc
@@ -237,6 +237,9 @@
   } else if (klass->IsInterface()) {
     *error_msg = "Modification of Interface classes is currently not supported";
     return ERR(UNMODIFIABLE_CLASS);
+  } else if (klass->IsStringClass()) {
+    *error_msg = "Modification of String class is not supported";
+    return ERR(UNMODIFIABLE_CLASS);
   } else if (klass->IsArrayClass()) {
     *error_msg = "Modification of Array classes is not supported";
     return ERR(UNMODIFIABLE_CLASS);
diff --git a/test/912-classes/expected.txt b/test/912-classes/expected.txt
index e932b20..6b86ac9 100644
--- a/test/912-classes/expected.txt
+++ b/test/912-classes/expected.txt
@@ -15,7 +15,8 @@
 int interface=false array=false modifiable=false
 $Proxy0 interface=false array=false modifiable=false
 java.lang.Runnable interface=true array=false modifiable=false
-java.lang.String interface=false array=false modifiable=true
+java.lang.String interface=false array=false modifiable=false
+java.util.ArrayList interface=false array=false modifiable=true
 [I interface=false array=true modifiable=false
 [Ljava.lang.Runnable; interface=false array=true modifiable=false
 [Ljava.lang.String; interface=false array=true modifiable=false
diff --git a/test/912-classes/src/Main.java b/test/912-classes/src/Main.java
index 005074f..5d25d76 100644
--- a/test/912-classes/src/Main.java
+++ b/test/912-classes/src/Main.java
@@ -17,6 +17,7 @@
 import java.lang.ref.Reference;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Proxy;
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Comparator;
 
@@ -40,6 +41,7 @@
     testClassType(getProxyClass());
     testClassType(Runnable.class);
     testClassType(String.class);
+    testClassType(ArrayList.class);
 
     testClassType(int[].class);
     testClassType(Runnable[].class);