mirror of
https://github.com/reactos/wine.git
synced 2024-11-25 04:39:45 +00:00
jscript: Call script_parse from compile_script, not the other way around.
This commit is contained in:
parent
825eb76321
commit
be29a73845
@ -1778,13 +1778,24 @@ static HRESULT compile_function(compiler_ctx_t *ctx, source_elements_t *source,
|
|||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
HRESULT compile_script(parser_ctx_t *parser, BOOL from_eval)
|
HRESULT compile_script(script_ctx_t *ctx, const WCHAR *code, const WCHAR *delimiter, BOOL from_eval,
|
||||||
|
parser_ctx_t **ret)
|
||||||
{
|
{
|
||||||
|
parser_ctx_t *parser;
|
||||||
HRESULT hres;
|
HRESULT hres;
|
||||||
|
|
||||||
hres = init_compiler(parser);
|
hres = script_parse(ctx, code, delimiter, from_eval, &parser);
|
||||||
if(FAILED(hres))
|
if(FAILED(hres))
|
||||||
return hres;
|
return hres;
|
||||||
|
|
||||||
return compile_function(parser->compiler, parser->source, from_eval);
|
hres = init_compiler(parser);
|
||||||
|
if(SUCCEEDED(hres))
|
||||||
|
hres = compile_function(parser->compiler, parser->source, from_eval);
|
||||||
|
if(FAILED(hres)) {
|
||||||
|
parser_release(parser);
|
||||||
|
return hres;
|
||||||
|
}
|
||||||
|
|
||||||
|
*ret = parser;
|
||||||
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
@ -577,4 +577,4 @@ typedef struct {
|
|||||||
prop_val_t *property_list;
|
prop_val_t *property_list;
|
||||||
} property_value_expression_t;
|
} property_value_expression_t;
|
||||||
|
|
||||||
HRESULT compile_script(parser_ctx_t*,BOOL) DECLSPEC_HIDDEN;
|
HRESULT compile_script(script_ctx_t*,const WCHAR*,const WCHAR*,BOOL,parser_ctx_t**) DECLSPEC_HIDDEN;
|
||||||
|
@ -774,7 +774,7 @@ static HRESULT construct_function(script_ctx_t *ctx, DISPPARAMS *dp, jsexcept_t
|
|||||||
if(FAILED(hres))
|
if(FAILED(hres))
|
||||||
return hres;
|
return hres;
|
||||||
|
|
||||||
hres = script_parse(ctx, str, NULL, FALSE, &parser);
|
hres = compile_script(ctx, str, NULL, FALSE, &parser);
|
||||||
heap_free(str);
|
heap_free(str);
|
||||||
if(FAILED(hres))
|
if(FAILED(hres))
|
||||||
return hres;
|
return hres;
|
||||||
|
@ -371,7 +371,7 @@ static HRESULT JSGlobal_eval(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, DIS
|
|||||||
}
|
}
|
||||||
|
|
||||||
TRACE("parsing %s\n", debugstr_w(V_BSTR(arg)));
|
TRACE("parsing %s\n", debugstr_w(V_BSTR(arg)));
|
||||||
hres = script_parse(ctx, V_BSTR(arg), NULL, TRUE, &parser_ctx);
|
hres = compile_script(ctx, V_BSTR(arg), NULL, TRUE, &parser_ctx);
|
||||||
if(FAILED(hres)) {
|
if(FAILED(hres)) {
|
||||||
WARN("parse (%s) failed: %08x\n", debugstr_w(V_BSTR(arg)), hres);
|
WARN("parse (%s) failed: %08x\n", debugstr_w(V_BSTR(arg)), hres);
|
||||||
return throw_syntax_error(ctx, ei, hres, NULL);
|
return throw_syntax_error(ctx, ei, hres, NULL);
|
||||||
|
@ -762,7 +762,7 @@ static HRESULT WINAPI JScriptParse_ParseScriptText(IActiveScriptParse *iface,
|
|||||||
if(This->thread_id != GetCurrentThreadId() || This->ctx->state == SCRIPTSTATE_CLOSED)
|
if(This->thread_id != GetCurrentThreadId() || This->ctx->state == SCRIPTSTATE_CLOSED)
|
||||||
return E_UNEXPECTED;
|
return E_UNEXPECTED;
|
||||||
|
|
||||||
hres = script_parse(This->ctx, pstrCode, pstrDelimiter, FALSE, &parser_ctx);
|
hres = compile_script(This->ctx, pstrCode, pstrDelimiter, FALSE, &parser_ctx);
|
||||||
if(FAILED(hres))
|
if(FAILED(hres))
|
||||||
return hres;
|
return hres;
|
||||||
|
|
||||||
@ -829,7 +829,7 @@ static HRESULT WINAPI JScriptParseProcedure_ParseProcedureText(IActiveScriptPars
|
|||||||
if(This->thread_id != GetCurrentThreadId() || This->ctx->state == SCRIPTSTATE_CLOSED)
|
if(This->thread_id != GetCurrentThreadId() || This->ctx->state == SCRIPTSTATE_CLOSED)
|
||||||
return E_UNEXPECTED;
|
return E_UNEXPECTED;
|
||||||
|
|
||||||
hres = script_parse(This->ctx, pstrCode, pstrDelimiter, FALSE, &parser_ctx);
|
hres = compile_script(This->ctx, pstrCode, pstrDelimiter, FALSE, &parser_ctx);
|
||||||
if(FAILED(hres)) {
|
if(FAILED(hres)) {
|
||||||
WARN("Parse failed %08x\n", hres);
|
WARN("Parse failed %08x\n", hres);
|
||||||
return hres;
|
return hres;
|
||||||
|
@ -1582,8 +1582,6 @@ HRESULT script_parse(script_ctx_t *ctx, const WCHAR *code, const WCHAR *delimite
|
|||||||
parser_parse(parser_ctx);
|
parser_parse(parser_ctx);
|
||||||
jsheap_clear(mark);
|
jsheap_clear(mark);
|
||||||
hres = parser_ctx->hres;
|
hres = parser_ctx->hres;
|
||||||
if(SUCCEEDED(hres))
|
|
||||||
hres = compile_script(parser_ctx, from_eval);
|
|
||||||
if(FAILED(hres)) {
|
if(FAILED(hres)) {
|
||||||
parser_release(parser_ctx);
|
parser_release(parser_ctx);
|
||||||
return hres;
|
return hres;
|
||||||
|
Loading…
Reference in New Issue
Block a user