You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

29 lines
754 B

/*
* This is a pretty rare case, but if the built-in eval() function is
* called from C without any activations on the callstack, the eval()
* should and be handled as an indirect eval. Note that this is different
* than calling the Duktape API eval call. We can contrive this situation
* by using a bound eval().
*/
/*===
hello from eval
rc=0
final top: 0
===*/
void test(duk_context *ctx) {
int rc;
duk_eval_string(ctx, "this.testFunc = eval.bind(this, 'print(\\'hello from eval\\')');");
duk_pop(ctx);
duk_push_global_object(ctx);
duk_get_prop_string(ctx, -1, "testFunc");
rc = duk_pcall(ctx, 0, DUK_INVALID_INDEX);
printf("rc=%d\n", rc);
duk_pop_2(ctx);
printf("final top: %d\n", duk_get_top(ctx));
}