MonoDomain *domain = mono_domain_get ();
MonoType *type = MONO_HANDLE_RAW(reftype)->type;
MonoClass *klass = mono_class_from_mono_type_internal (type);
+ // FIXME: this should be escaped in some scenarios with mono_identifier_escape_type_name_chars
+ // Determining exactly when to do so is fairly difficult, so for now we don't bother to avoid regressions
+ const char *klass_name = m_class_get_name (klass);
if (type->byref) {
- char *n = g_strdup_printf ("%s&", m_class_get_name (klass));
+ char *n = g_strdup_printf ("%s&", klass_name);
MonoStringHandle res = mono_string_new_handle (domain, n, error);
g_free (n);
return res;
} else {
- return mono_string_new_handle (domain, m_class_get_name (klass), error);
+ return mono_string_new_handle (domain, klass_name, error);
}
}
if (m_class_get_name_space (klass) [0] == '\0')
return NULL_HANDLE_STRING;
- else
- return mono_string_new_handle (domain, m_class_get_name_space (klass), error);
+
+ char *escaped = mono_identifier_escape_type_name_chars (m_class_get_name_space (klass));
+ MonoStringHandle res = mono_string_new_handle (domain, escaped, error);
+ g_free (escaped);
+ return res;
}
gint32