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

Reply via email to