Fix some bugs in 92ca06aa7dc4073bdc52f45842a1fbc2fdfce7bf. Fixes #26989.
authorZoltan Varga <vargaz@gmail.com>
Tue, 10 Mar 2015 21:28:52 +0000 (17:28 -0400)
committerZoltan Varga <vargaz@gmail.com>
Tue, 10 Mar 2015 21:29:14 +0000 (17:29 -0400)
mono/mini/aot-compiler.c
mono/mini/aot-runtime.c
mono/mini/mini-runtime.c

index 05dd150cd0d9615924fc67e6880b0bbe3892c429..83185d488bbc7bd9365a757554106d6282b9f58a 100644 (file)
@@ -5241,9 +5241,11 @@ encode_patch (MonoAotCompile *acfg, MonoJumpInfo *patch_info, guint8 *buf, guint
        }
        case MONO_PATCH_INFO_LDSTR_LIT: {
                const char *s = patch_info->data.target;
+               int len = strlen (s);
 
-               encode_value (strlen (s), p, &p);
-               memcpy (p, s, strlen (s) + 1);
+               encode_value (len, p, &p);
+               memcpy (p, s, len + 1);
+               p += len + 1;
                break;
        }
        default:
index c23fe17c49b879114bec439a38a6bb6d1275660a..7d91eb80e3a4dc91f8a5a9c83bafc2cf0c8920c9 100644 (file)
@@ -3419,7 +3419,7 @@ decode_patch (MonoAotModule *aot_module, MonoMemPool *mp, MonoJumpInfo *ji, guin
                int len = decode_value (p, &p);
                char *s;
 
-           s = mono_mempool_alloc0 (mp, len + 1);
+               s = mono_mempool_alloc0 (mp, len + 1);
                memcpy (s, p, len + 1);
                p += len + 1;
 
index 756806b601dd6af8ff7fcbc34c851e27d2abbc44..209c48b37f6c1d1fc3ae68cc7e07e3d51bfc7e3b 100755 (executable)
@@ -1651,7 +1651,14 @@ mono_resolve_patch_target (MonoMethod *method, MonoDomain *domain, guint8 *code,
                break;
        }
        case MONO_PATCH_INFO_LDSTR_LIT: {
-               target = mono_string_new (domain, patch_info->data.target);
+               int len;
+               char *s;
+
+               len = strlen (patch_info->data.target);
+               s = mono_domain_alloc0 (domain, len + 1);
+               memcpy (s, patch_info->data.target, len);
+               target = s;
+
                break;
        }
        default: