@@ -190,12 +190,32 @@ EmbeddedAssemblies::find_assembly_store_entry (hash_t hash, const AssemblyStoreI
190
190
return nullptr ;
191
191
}
192
192
193
+ // TODO: need to forbid loading assemblies into non-default ALC if they contain marshal method callbacks.
194
+ // The best way is probably to store the information in the assembly `MonoImage*` cache. We should
195
+ // abort() if the assembly contains marshal callbacks.
193
196
template <LoaderData TLoaderData>
194
197
force_inline MonoAssembly*
195
- EmbeddedAssemblies::assembly_store_open_from_bundles (dynamic_local_string<SENSIBLE_PATH_MAX>& name , TLoaderData loader_data, bool ref_only) noexcept
198
+ EmbeddedAssemblies::open_from_bundles (MonoAssemblyName* aname , TLoaderData loader_data, [[maybe_unused]] MonoError *error , bool ref_only) noexcept
196
199
{
200
+ #if defined (DEBUG)
201
+ if (assembly_store_hashes == nullptr ) {
202
+ // With FastDev we might not have any assembly stores present
203
+ return nullptr ;
204
+ }
205
+ #endif
206
+
207
+ const char *culture = mono_assembly_name_get_culture (aname);
208
+ const char *asmname = mono_assembly_name_get_name (aname);
209
+
210
+ dynamic_local_string<SENSIBLE_PATH_MAX> name;
211
+ if (culture != nullptr && *culture != ' \0 ' ) {
212
+ name.append_c (culture);
213
+ name.append (zip_path_separator);
214
+ }
215
+ name.append_c (asmname);
216
+
197
217
hash_t name_hash = xxhash::hash (name.get (), name.length ());
198
- log_debug (LOG_ASSEMBLY, " assembly_store_open_from_bundles : looking for bundled name: '%s' (hash 0x%zx)" , name.get (), name_hash);
218
+ log_debug (LOG_ASSEMBLY, " open_from_bundles : looking for bundled assembly '%s' (hash 0x%zx)" , name.get (), name_hash);
199
219
200
220
const AssemblyStoreIndexEntry *hash_entry = find_assembly_store_entry (name_hash, assembly_store_hashes, assembly_store.index_entry_count );
201
221
if (hash_entry == nullptr ) {
@@ -256,32 +276,7 @@ EmbeddedAssemblies::assembly_store_open_from_bundles (dynamic_local_string<SENSI
256
276
257
277
MonoImageOpenStatus status;
258
278
MonoAssembly *a = mono_assembly_load_from_full (image, name.get (), &status, ref_only);
259
- if (a == nullptr || status != MonoImageOpenStatus::MONO_IMAGE_OK) {
260
- log_warn (LOG_ASSEMBLY, " Failed to load managed assembly '%s'. %s" , name.get (), mono_image_strerror (status));
261
- return nullptr ;
262
- }
263
-
264
- return a;
265
- }
266
-
267
- // TODO: need to forbid loading assemblies into non-default ALC if they contain marshal method callbacks.
268
- // The best way is probably to store the information in the assembly `MonoImage*` cache. We should
269
- // abort() if the assembly contains marshal callbacks.
270
- template <LoaderData TLoaderData>
271
- force_inline MonoAssembly*
272
- EmbeddedAssemblies::open_from_bundles (MonoAssemblyName* aname, TLoaderData loader_data, [[maybe_unused]] MonoError *error, bool ref_only) noexcept
273
- {
274
- const char *culture = mono_assembly_name_get_culture (aname);
275
- const char *asmname = mono_assembly_name_get_name (aname);
276
-
277
- dynamic_local_string<SENSIBLE_PATH_MAX> name;
278
- if (culture != nullptr && *culture != ' \0 ' ) {
279
- name.append_c (culture);
280
- name.append (zip_path_separator);
281
- }
282
- name.append_c (asmname);
283
279
284
- MonoAssembly *a = assembly_store_open_from_bundles (name, loader_data, ref_only);
285
280
if (a == nullptr ) {
286
281
log_warn (LOG_ASSEMBLY, " open_from_bundles: failed to load bundled assembly %s" , name.get ());
287
282
#if defined(DEBUG)
0 commit comments