Segfaulting in createTypeInfoArray(): exps[i] is null. Applies to DMD0.175 and later, including both D2.036 and D1.051. --- void foo(int,...) {} void bar(){ foo(); } --- arr.d(4): Error: function arr.foo (int _param_0,...) is not callable using argum ent types () arr.d(4): Error: expected 1 function arguments, not 0 <segfault> Doesn't happen with C-style variadics.
CAUSE: if not enough arguments, tries to create a negatively-sized type info array! PATCH: expression.c, line 802 (DMD2 svn 241), at end of functionArguments(): --- // If D linkage and variadic, add _arguments[] as first argument - if (tf->linkage == LINKd && tf->varargs == 1) + if (tf->linkage == LINKd && tf->varargs == 1 && arguments->dim >= nparams) { Expression *e; e = createTypeInfoArray(sc, (Expression **)&arguments->data[nparams], arguments->dim - nparams); arguments->insert(0, e);
Fixed dmd 1.053 and 2.037