@@ -383,7 +383,7 @@ run_load_nif_from_mem(Config) ->
383383 SoPath = filename :join (Data , " nif_mod.1.so" ),
384384 {ok , SoBin } = file :read_file (SoPath ),
385385
386- % % --- happy path: map with label ---
386+ % % --- happy path: map with filename ---
387387 ok = nif_mod :load_nif_lib_from_mem (Config , 1 , SoBin ),
388388 1 = nif_mod :lib_version (),
389389
@@ -399,7 +399,6 @@ run_load_nif_from_mem(Config) ->
399399 true = erlang :purge_module (nif_mod ),
400400 receive unloaded -> ok after 1000 -> ok end ,
401401
402- % % --- error: label longer than PATH_MAX-9 ---
403402 {module , nif_mod } = erlang :load_module (nif_mod , ModBin ),
404403 LongPath = lists :duplicate (4096 - 9 , $x ),
405404 {error , {load_failed , _ }} = nif_mod :load_nif_mem_path (LongPath , SoBin ),
@@ -415,6 +414,30 @@ run_load_nif_from_mem(Config) ->
415414 true = erlang :purge_module (nif_mod ),
416415 receive unloaded -> ok after 1000 -> ok end ,
417416
417+ % % --- error: both keys present but filename is not string/binary ---
418+ {module , nif_mod } = erlang :load_module (nif_mod , ModBin ),
419+ Map1 = #{memory => SoBin , filename => 123 },
420+ {error , {bad_lib , _ }} = erlang :load_nif (Map1 , []),
421+ true = erlang :delete_module (nif_mod ),
422+ true = erlang :purge_module (nif_mod ),
423+ receive unloaded -> ok after 1000 -> ok end ,
424+
425+ % % --- error: map with neither memory nor filename ---
426+ {module , nif_mod } = erlang :load_module (nif_mod , ModBin ),
427+ Map2 = #{foo => bar },
428+ {error , {bad_lib , _ }} = erlang :load_nif (Map2 , []),
429+ true = erlang :delete_module (nif_mod ),
430+ true = erlang :purge_module (nif_mod ),
431+ receive unloaded -> ok after 1000 -> ok end ,
432+
433+ % % --- error: map with only filename key and non-string/binary value ---
434+ {module , nif_mod } = erlang :load_module (nif_mod , ModBin ),
435+ Map3 = #{filename => 123 },
436+ {error , {bad_lib , _ }} = erlang :load_nif (Map3 , []),
437+ true = erlang :delete_module (nif_mod ),
438+ true = erlang :purge_module (nif_mod ),
439+ receive unloaded -> ok after 1000 -> ok end ,
440+
418441 ok .
419442
420443% % Test old reload feature now always fails
0 commit comments