- if (res == NULL)
- res = mono_module_get_types (domain, rm->image, exportedOnly);
- else {
- MonoArray *append = mono_module_get_types (domain, rm->image, exportedOnly);
- if (mono_array_length (append) > 0) {
- guint32 len1, len2;
- MonoArray *new;
- len1 = mono_array_length (res);
- len2 = mono_array_length (append);
- new = mono_array_new (domain, mono_defaults.monotype_class, len1 + len2);
- memcpy (mono_array_addr (new, MonoReflectionType*, 0),
- mono_array_addr (res, MonoReflectionType*, 0),
- len1 * sizeof (MonoReflectionType*));
- memcpy (mono_array_addr (new, MonoReflectionType*, len1),
- mono_array_addr (append, MonoReflectionType*, 0),
- len2 * sizeof (MonoReflectionType*));
- res = new;
- }
+ MonoArray *append = mono_module_get_types (domain, rm->image, exportedOnly);
+ if (append && mono_array_length (append) > 0) {
+ guint32 len1, len2;
+ MonoArray *new;
+ len1 = res ? mono_array_length (res) : 0;
+ len2 = mono_array_length (append);
+ new = mono_array_new (domain, mono_defaults.monotype_class, len1 + len2);
+ if (res)
+ mono_array_memcpy_refs (new, 0, res, 0, len1);
+ mono_array_memcpy_refs (new, len1, append, 0, len2);
+ res = new;