void boom(mapping info) {m_delete(info[0]);}
It ought to give a compilation error (not enough args to m_delete) but it segfaults the interpreter on compilation. Correct behaviour is restored if the argument is explicitly cast to mapping:
void boom(mapping info) {m_delete((mapping)info[0]);} boom.pike:1:Too few arguments to m_delete (got 1). boom.pike:1:Expected: mixed. boom.pike:1:Function type: boom.pike:1:Got : scope(0,function(object, mixed : mixed) | function(mapping((0=mixed):(1=mixed)), 0 : 1) | function(multiset((0=mixed)), 0 : int(1bit))). Pike: Failed to compile script.
The crash happens in src/pike_ctypes.cmod, get_first_arg_type, in the T_MANY case - fun_type->car is NULL.
ChrisA
pike-devel@lists.lysator.liu.se