[runtime] Don't discard string conversion errors
authorAlexander Kyte <alexmkyte@gmail.com>
Wed, 22 Mar 2017 17:54:22 +0000 (13:54 -0400)
committerAlexander Kyte <alexmkyte@gmail.com>
Wed, 29 Mar 2017 19:45:55 +0000 (15:45 -0400)
mono/metadata/icall.c
mono/metadata/object.c

index 2f3b7f7f27fc1a5dec9a8c1d2adb5193ed908486..9525ed7a6c8bd1c74ce44f5074b91532247a10f4 100644 (file)
@@ -7094,6 +7094,8 @@ ves_icall_System_Configuration_DefaultConfig_get_machine_config_path (void)
        mcpath = mono_string_new (mono_domain_get (), path);
        g_free (path);
 
+       g_assert (mcpath);
+
        return mcpath;
 }
 
index bba8c17d17ec4d142458764a1d674876c54dc7ac..d7a2daafd54edaf14f072c94e7a1e36c98390972 100644 (file)
@@ -6248,24 +6248,25 @@ mono_string_new_checked (MonoDomain *domain, const char *text, MonoError *error)
 {
        MONO_REQ_GC_UNSAFE_MODE;
 
-    GError *eg_error = NULL;
-    MonoString *o = NULL;
-    guint16 *ut;
-    glong items_written;
-    int l;
-
-    error_init (error);
-
-    l = strlen (text);
-   
-    ut = g_utf8_to_utf16 (text, l, NULL, &items_written, &eg_error);
-
-    if (!eg_error)
-           o = mono_string_new_utf16_checked (domain, ut, items_written, error);
-    else
-        g_error_free (eg_error);
+       GError *eg_error = NULL;
+       MonoString *o = NULL;
+       guint16 *ut;
+       glong items_written;
+       int l;
 
-    g_free (ut);
+       error_init (error);
+       
+       l = strlen (text);
+       
+       ut = g_utf8_to_utf16 (text, l, NULL, &items_written, &eg_error);
+       
+       if (!eg_error) {
+               o = mono_string_new_utf16_checked (domain, ut, items_written, error);
+       } else {
+               mono_error_set_execution_engine (error, "String conversion error: %s", eg_error->message);
+       }
+       
+       g_free (ut);
     
 /*FIXME g_utf8_get_char, g_utf8_next_char and g_utf8_validate are not part of eglib.*/
 #if 0