'assert()' in 'lookup_file()'

Gisle Vanem <[email protected]> Thu, 28 Aug 2025 12:03:06 +0200
Newsgroups gmane.comp.gnu.make.bugs
Message-ID <[email protected]>
Hello list.

I made a little 'mk_speak.dll' to speak the given
string. It uses Microsoft Speech API v5. But I find
that if I load it like:
   load mk_speak.dll (speak_init)

gnumake bombs in 'lookup_file()':
   assert (*name != '\0');

since 'name' is empty. Or with max debug:
   gnumake -f speak-test.mak --debug=v
   ...
   Reading makefile 'speak-test.mak'...
   Loading symbol mk_speak_gmk_setup from mk_speak.dll
   Loaded shared object mk_speak.dll
   Detected symbol mk_speak_gmk_unload in mk_speak.dll
   Assertion failed: *name != '\0', file file.c, line 92

With a 'load mk_speak.dll(speak_init)' (no space),
all is well. Why does it not handle this single
space?

It seems a 'load' line is parsed similar to a normal include
file where a ' ' is not legal. Or? IMHO, a space should be
accepted.

BTW1. I'm not sure what the signature of such a 'speak_init()'
function should be. Same as the setup function?
   EXPORT int mk_speak_gmk_setup (unsigned int abi, const gmk_floc *flocp)
   {
     //  ...
     return (-1);
   }

BTW2. Could such an init-function take parameters?
E.g. 'load mk_speak.dll(speak_init, 50)' would be handy
to set the volume to 50%.

-- 
--gv