hi,
in pike 7.6 the following leads to a clean error:
void do(){};
mixed ___HilfeWrapper() { return do; }
crash.pike:1:do is a reserved word.
crash.pike:2:do is a reserved word.
crash.pike:2:syntax error, unexpected ';'
Pike: Failed to compile script:
Compilation failed.
in 7.8 or 7.9 it leads to a fatal crash:
pike79 crash.pike
crash.pike:1:do is a reserved word.
/local/users/mbaehr/src/pike/src/pike_types.c:677: Fatal error:
Type mark stack underflow
Backtrace at time of fatal:
-:1: PikeCompiler("", UNDEFINED, -1, -1, target, UNDEFINED)->compile()
-:1:
DefaultCompilerEnvironment->compile(PikeCompiler("", UNDEFINED, -1,
-1, target, UNDEFINED))
/usr/local/pike/7.9.5/lib/master.pike:1172:
compile_string("void do(){}\nmixed ___HilfeWrapper() { return do;
}\n","/local/users/mbaehr
/home/src/pike/crash.pike",UNDEFINED,/local/users/mbaehr/home/src/pike/crash,0,UNDEFINED)
/usr/local/pike/7.9.5/lib/master.pike:1896:
master()->low_findprog("/local/users/mbaehr/home/src/pike/crash",".pike",UNDEFINED,UNDEFINE
D)
/usr/local/pike/7.9.5/lib/master.pike:2011:
master()->findprog("/local/users/mbaehr/home/src/pike/crash",".pike",UNDEFINED,UNDEFINED)
/usr/local/pike/7.9.5/lib/master.pike:2050:
master()->low_cast_to_program("/local/users/mbaehr/home/src/pike/crash","/usr/local/pike/7.
9.5/lib/master.pike",UNDEFINED,UNDEFINED)
/usr/local/pike/7.9.5/lib/master.pike:2084:
master()->cast_to_program("/local/users/mbaehr/home/src/pike/crash.pike","/usr/local/pike/7
.9.5/lib/master.pike",UNDEFINED)
fish: Job 2, “pike79 crash.pike ” terminated by signal SIGABRT (Abort)
this works in different variations.
void do() { mixed bar = ""; }
or
void do() {}
mixed bar() { return ""; }
trigger the same error, whereas
void do(){}
void do(){ write("bar"); }
mixed do(){ return 1; }
all work correctly
greetings, martin.