@@ -6285,6 +6285,24 @@ mono_string_new_len_checked (MonoDomain *domain, const char *text, guint length,
6285
6285
return o ;
6286
6286
}
6287
6287
6288
+ static MonoString *
6289
+ mono_string_new_internal (MonoDomain * domain , const char * text )
6290
+ {
6291
+ MonoError error ;
6292
+ MonoString * res = NULL ;
6293
+ res = mono_string_new_checked (domain , text , & error );
6294
+ if (!is_ok (& error )) {
6295
+ /* Mono API compatability: assert on Out of Memory errors,
6296
+ * return NULL otherwise (most likely an invalid UTF-8 byte
6297
+ * sequence). */
6298
+ if (mono_error_get_error_code (& error ) == MONO_ERROR_OUT_OF_MEMORY )
6299
+ mono_error_assert_ok (& error );
6300
+ else
6301
+ mono_error_cleanup (& error );
6302
+ }
6303
+ return res ;
6304
+ }
6305
+
6288
6306
/**
6289
6307
* mono_string_new:
6290
6308
* \param text a pointer to a UTF-8 string
@@ -6295,11 +6313,7 @@ mono_string_new_len_checked (MonoDomain *domain, const char *text, guint length,
6295
6313
MonoString *
6296
6314
mono_string_new (MonoDomain * domain , const char * text )
6297
6315
{
6298
- MonoError error ;
6299
- MonoString * res = NULL ;
6300
- res = mono_string_new_checked (domain , text , & error );
6301
- mono_error_assert_ok (& error );
6302
- return res ;
6316
+ return mono_string_new_internal (domain , text );
6303
6317
}
6304
6318
6305
6319
/**
@@ -6372,16 +6386,7 @@ mono_string_new_wrapper (const char *text)
6372
6386
{
6373
6387
MONO_REQ_GC_UNSAFE_MODE ;
6374
6388
6375
- MonoDomain * domain = mono_domain_get ();
6376
-
6377
- if (text ) {
6378
- MonoError error ;
6379
- MonoString * result = mono_string_new_checked (domain , text , & error );
6380
- mono_error_assert_ok (& error );
6381
- return result ;
6382
- }
6383
-
6384
- return NULL ;
6389
+ return mono_string_new_internal (mono_domain_get (), text );
6385
6390
}
6386
6391
6387
6392
/**
0 commit comments