mirror of
https://github.com/rkd77/elinks.git
synced 2024-12-04 14:46:47 -05:00
Added ret param for document.write
This commit is contained in:
parent
2f0490cb04
commit
62d42380f8
@ -362,7 +362,7 @@ imported:
|
|||||||
return;
|
return;
|
||||||
add_bytes_to_string(&code, html, *end - html);
|
add_bytes_to_string(&code, html, *end - html);
|
||||||
|
|
||||||
ecmascript_eval(interpreter, &code);
|
ecmascript_eval(interpreter, &code, &ret);
|
||||||
done_string(&code);
|
done_string(&code);
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
|
@ -129,7 +129,7 @@ process_snippets(struct ecmascript_interpreter *interpreter,
|
|||||||
|
|
||||||
if (*string->source != '^') {
|
if (*string->source != '^') {
|
||||||
/* Evaluate <script>code</script> snippet */
|
/* Evaluate <script>code</script> snippet */
|
||||||
ecmascript_eval(interpreter, string);
|
ecmascript_eval(interpreter, string, NULL);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -194,7 +194,7 @@ process_snippets(struct ecmascript_interpreter *interpreter,
|
|||||||
if (fragment) {
|
if (fragment) {
|
||||||
struct string code = INIT_STRING(fragment->data, fragment->length);
|
struct string code = INIT_STRING(fragment->data, fragment->length);
|
||||||
|
|
||||||
ecmascript_eval(interpreter, &code);
|
ecmascript_eval(interpreter, &code, NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -119,15 +119,15 @@ ecmascript_put_interpreter(struct ecmascript_interpreter *interpreter)
|
|||||||
|
|
||||||
void
|
void
|
||||||
ecmascript_eval(struct ecmascript_interpreter *interpreter,
|
ecmascript_eval(struct ecmascript_interpreter *interpreter,
|
||||||
struct string *code)
|
struct string *code, struct string *ret)
|
||||||
{
|
{
|
||||||
if (!get_ecmascript_enable())
|
if (!get_ecmascript_enable())
|
||||||
return;
|
return;
|
||||||
assert(interpreter);
|
assert(interpreter);
|
||||||
#ifdef CONFIG_ECMASCRIPT_SEE
|
#ifdef CONFIG_ECMASCRIPT_SEE
|
||||||
see_eval(interpreter, code);
|
see_eval(interpreter, code, ret);
|
||||||
#else
|
#else
|
||||||
spidermonkey_eval(interpreter, code);
|
spidermonkey_eval(interpreter, code, ret);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -18,6 +18,8 @@ struct view_state;
|
|||||||
struct ecmascript_interpreter {
|
struct ecmascript_interpreter {
|
||||||
struct view_state *vs;
|
struct view_state *vs;
|
||||||
void *backend_data;
|
void *backend_data;
|
||||||
|
/* Used by document.write() */
|
||||||
|
struct string *ret;
|
||||||
time_t exec_start;
|
time_t exec_start;
|
||||||
|
|
||||||
/* This is a cross-rerenderings accumulator of
|
/* This is a cross-rerenderings accumulator of
|
||||||
@ -57,7 +59,7 @@ void ecmascript_put_interpreter(struct ecmascript_interpreter *interpreter);
|
|||||||
|
|
||||||
void ecmascript_reset_state(struct view_state *vs);
|
void ecmascript_reset_state(struct view_state *vs);
|
||||||
|
|
||||||
void ecmascript_eval(struct ecmascript_interpreter *interpreter, struct string *code);
|
void ecmascript_eval(struct ecmascript_interpreter *interpreter, struct string *code, struct string *ret);
|
||||||
unsigned char *ecmascript_eval_stringback(struct ecmascript_interpreter *interpreter, struct string *code);
|
unsigned char *ecmascript_eval_stringback(struct ecmascript_interpreter *interpreter, struct string *code);
|
||||||
/* Returns -1 if undefined. */
|
/* Returns -1 if undefined. */
|
||||||
int ecmascript_eval_boolback(struct ecmascript_interpreter *interpreter, struct string *code);
|
int ecmascript_eval_boolback(struct ecmascript_interpreter *interpreter, struct string *code);
|
||||||
|
@ -96,7 +96,7 @@ see_put_interpreter(struct ecmascript_interpreter *interpreter)
|
|||||||
|
|
||||||
void
|
void
|
||||||
see_eval(struct ecmascript_interpreter *interpreter,
|
see_eval(struct ecmascript_interpreter *interpreter,
|
||||||
struct string *code)
|
struct string *code, struct string *ret)
|
||||||
{
|
{
|
||||||
|
|
||||||
struct SEE_interpreter *interp = interpreter->backend_data;
|
struct SEE_interpreter *interp = interpreter->backend_data;
|
||||||
@ -106,6 +106,7 @@ see_eval(struct ecmascript_interpreter *interpreter,
|
|||||||
struct SEE_value result;
|
struct SEE_value result;
|
||||||
|
|
||||||
g->exec_start = time(NULL);
|
g->exec_start = time(NULL);
|
||||||
|
g->ret = ret;
|
||||||
SEE_TRY(interp, try_ctxt) {
|
SEE_TRY(interp, try_ctxt) {
|
||||||
SEE_Global_eval(interp, input, &result);
|
SEE_Global_eval(interp, input, &result);
|
||||||
}
|
}
|
||||||
@ -130,6 +131,7 @@ see_eval_stringback(struct ecmascript_interpreter *interpreter,
|
|||||||
unsigned char *volatile string = NULL;
|
unsigned char *volatile string = NULL;
|
||||||
|
|
||||||
g->exec_start = time(NULL);
|
g->exec_start = time(NULL);
|
||||||
|
g->ret = NULL;
|
||||||
SEE_TRY(interp, try_ctxt) {
|
SEE_TRY(interp, try_ctxt) {
|
||||||
SEE_Global_eval(interp, input, &result);
|
SEE_Global_eval(interp, input, &result);
|
||||||
if (SEE_VALUE_GET_TYPE(&result) != SEE_NULL)
|
if (SEE_VALUE_GET_TYPE(&result) != SEE_NULL)
|
||||||
@ -158,6 +160,7 @@ see_eval_boolback(struct ecmascript_interpreter *interpreter,
|
|||||||
SEE_int32_t volatile res = 0;
|
SEE_int32_t volatile res = 0;
|
||||||
|
|
||||||
g->exec_start = time(NULL);
|
g->exec_start = time(NULL);
|
||||||
|
g->ret = NULL;
|
||||||
SEE_TRY(interp, try_ctxt) {
|
SEE_TRY(interp, try_ctxt) {
|
||||||
SEE_Global_eval(interp, input, &result);
|
SEE_Global_eval(interp, input, &result);
|
||||||
/* history.back() returns SEE_NULL */
|
/* history.back() returns SEE_NULL */
|
||||||
|
@ -10,7 +10,7 @@ void see_done();
|
|||||||
void *see_get_interpreter(struct ecmascript_interpreter *interpreter);
|
void *see_get_interpreter(struct ecmascript_interpreter *interpreter);
|
||||||
void see_put_interpreter(struct ecmascript_interpreter *interpreter);
|
void see_put_interpreter(struct ecmascript_interpreter *interpreter);
|
||||||
|
|
||||||
void see_eval(struct ecmascript_interpreter *interpreter, struct string *code);
|
void see_eval(struct ecmascript_interpreter *interpreter, struct string *code, struct string *ret);
|
||||||
unsigned char *see_eval_stringback(struct ecmascript_interpreter *interpreter, struct string *code);
|
unsigned char *see_eval_stringback(struct ecmascript_interpreter *interpreter, struct string *code);
|
||||||
int see_eval_boolback(struct ecmascript_interpreter *interpreter, struct string *code);
|
int see_eval_boolback(struct ecmascript_interpreter *interpreter, struct string *code);
|
||||||
|
|
||||||
|
@ -17,6 +17,7 @@ struct js_window_object {
|
|||||||
struct global_object {
|
struct global_object {
|
||||||
struct SEE_interpreter interp;
|
struct SEE_interpreter interp;
|
||||||
struct js_window_object *win;
|
struct js_window_object *win;
|
||||||
|
struct string *ret;
|
||||||
int exec_start;
|
int exec_start;
|
||||||
int max_exec_time;
|
int max_exec_time;
|
||||||
};
|
};
|
||||||
|
@ -239,7 +239,7 @@ spidermonkey_put_interpreter(struct ecmascript_interpreter *interpreter)
|
|||||||
|
|
||||||
void
|
void
|
||||||
spidermonkey_eval(struct ecmascript_interpreter *interpreter,
|
spidermonkey_eval(struct ecmascript_interpreter *interpreter,
|
||||||
struct string *code)
|
struct string *code, struct string *ret)
|
||||||
{
|
{
|
||||||
JSContext *ctx;
|
JSContext *ctx;
|
||||||
jsval rval;
|
jsval rval;
|
||||||
@ -247,6 +247,7 @@ spidermonkey_eval(struct ecmascript_interpreter *interpreter,
|
|||||||
assert(interpreter);
|
assert(interpreter);
|
||||||
ctx = interpreter->backend_data;
|
ctx = interpreter->backend_data;
|
||||||
setup_safeguard(interpreter, ctx);
|
setup_safeguard(interpreter, ctx);
|
||||||
|
interpreter->ret = ret;
|
||||||
JS_EvaluateScript(ctx, JS_GetGlobalObject(ctx),
|
JS_EvaluateScript(ctx, JS_GetGlobalObject(ctx),
|
||||||
code->source, code->length, "", 0, &rval);
|
code->source, code->length, "", 0, &rval);
|
||||||
}
|
}
|
||||||
@ -262,6 +263,7 @@ spidermonkey_eval_stringback(struct ecmascript_interpreter *interpreter,
|
|||||||
assert(interpreter);
|
assert(interpreter);
|
||||||
ctx = interpreter->backend_data;
|
ctx = interpreter->backend_data;
|
||||||
setup_safeguard(interpreter, ctx);
|
setup_safeguard(interpreter, ctx);
|
||||||
|
interpreter->ret = NULL;
|
||||||
if (JS_EvaluateScript(ctx, JS_GetGlobalObject(ctx),
|
if (JS_EvaluateScript(ctx, JS_GetGlobalObject(ctx),
|
||||||
code->source, code->length, "", 0, &rval)
|
code->source, code->length, "", 0, &rval)
|
||||||
== JS_FALSE) {
|
== JS_FALSE) {
|
||||||
@ -287,6 +289,7 @@ spidermonkey_eval_boolback(struct ecmascript_interpreter *interpreter,
|
|||||||
assert(interpreter);
|
assert(interpreter);
|
||||||
ctx = interpreter->backend_data;
|
ctx = interpreter->backend_data;
|
||||||
setup_safeguard(interpreter, ctx);
|
setup_safeguard(interpreter, ctx);
|
||||||
|
interpreter->ret = NULL;
|
||||||
ret = JS_EvaluateScript(ctx, JS_GetGlobalObject(ctx),
|
ret = JS_EvaluateScript(ctx, JS_GetGlobalObject(ctx),
|
||||||
code->source, code->length, "", 0, &rval);
|
code->source, code->length, "", 0, &rval);
|
||||||
if (ret == 2) { /* onClick="history.back()" */
|
if (ret == 2) { /* onClick="history.back()" */
|
||||||
|
@ -10,7 +10,7 @@ void spidermonkey_done();
|
|||||||
void *spidermonkey_get_interpreter(struct ecmascript_interpreter *interpreter);
|
void *spidermonkey_get_interpreter(struct ecmascript_interpreter *interpreter);
|
||||||
void spidermonkey_put_interpreter(struct ecmascript_interpreter *interpreter);
|
void spidermonkey_put_interpreter(struct ecmascript_interpreter *interpreter);
|
||||||
|
|
||||||
void spidermonkey_eval(struct ecmascript_interpreter *interpreter, struct string *code);
|
void spidermonkey_eval(struct ecmascript_interpreter *interpreter, struct string *code, struct string *ret);
|
||||||
unsigned char *spidermonkey_eval_stringback(struct ecmascript_interpreter *interpreter, struct string *code);
|
unsigned char *spidermonkey_eval_stringback(struct ecmascript_interpreter *interpreter, struct string *code);
|
||||||
int spidermonkey_eval_boolback(struct ecmascript_interpreter *interpreter, struct string *code);
|
int spidermonkey_eval_boolback(struct ecmascript_interpreter *interpreter, struct string *code);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user