Jacek Caban : vbscript: Store source cookie and starting line in vbscode_t.

Alexandre Julliard julliard at winehq.org
Thu Jan 23 15:48:48 CST 2020


Module: wine
Branch: master
Commit: 5436fc90f458ce86f2a7e073e1d4a08ebf967254
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=5436fc90f458ce86f2a7e073e1d4a08ebf967254

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Wed Jan 22 23:27:25 2020 +0100

vbscript: Store source cookie and starting line in vbscode_t.

Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/vbscript/compile.c  | 15 ++++++++++-----
 dlls/vbscript/vbscript.c |  5 +++--
 dlls/vbscript/vbscript.h |  9 ++++++---
 3 files changed, 19 insertions(+), 10 deletions(-)

diff --git a/dlls/vbscript/compile.c b/dlls/vbscript/compile.c
index 6e86bb07d0..769bbf15ba 100644
--- a/dlls/vbscript/compile.c
+++ b/dlls/vbscript/compile.c
@@ -1856,7 +1856,7 @@ void release_vbscode(vbscode_t *code)
     heap_free(code);
 }
 
-static vbscode_t *alloc_vbscode(compile_ctx_t *ctx, const WCHAR *source)
+static vbscode_t *alloc_vbscode(compile_ctx_t *ctx, const WCHAR *source, DWORD_PTR cookie, unsigned start_line)
 {
     vbscode_t *ret;
     size_t len;
@@ -1878,6 +1878,9 @@ static vbscode_t *alloc_vbscode(compile_ctx_t *ctx, const WCHAR *source)
         memcpy(ret->source, source, len * sizeof(WCHAR));
     ret->source[len] = 0;
 
+    ret->cookie = cookie;
+    ret->start_line = start_line;
+
     ret->instrs = heap_alloc(32*sizeof(instr_t));
     if(!ret->instrs) {
         release_vbscode(ret);
@@ -1904,7 +1907,8 @@ static void release_compiler(compile_ctx_t *ctx)
         release_vbscode(ctx->code);
 }
 
-HRESULT compile_script(script_ctx_t *script, const WCHAR *src, const WCHAR *delimiter, DWORD flags, vbscode_t **ret)
+HRESULT compile_script(script_ctx_t *script, const WCHAR *src, const WCHAR *delimiter, DWORD_PTR cookie,
+                       unsigned start_line, DWORD flags, vbscode_t **ret)
 {
     function_decl_t *func_decl;
     class_decl_t *class_decl;
@@ -1913,7 +1917,7 @@ HRESULT compile_script(script_ctx_t *script, const WCHAR *src, const WCHAR *deli
     vbscode_t *code;
     HRESULT hres;
 
-    code = ctx.code = alloc_vbscode(&ctx, src);
+    code = ctx.code = alloc_vbscode(&ctx, src, cookie, start_line);
     if(!ctx.code)
         return E_OUTOFMEMORY;
 
@@ -1978,13 +1982,14 @@ HRESULT compile_script(script_ctx_t *script, const WCHAR *src, const WCHAR *deli
     return S_OK;
 }
 
-HRESULT compile_procedure(script_ctx_t *script, const WCHAR *src, const WCHAR *delimiter, DWORD flags, class_desc_t **ret)
+HRESULT compile_procedure(script_ctx_t *script, const WCHAR *src, const WCHAR *delimiter, DWORD_PTR cookie,
+                          unsigned start_line, DWORD flags, class_desc_t **ret)
 {
     class_desc_t *desc;
     vbscode_t *code;
     HRESULT hres;
 
-    hres = compile_script(script, src, delimiter, flags & ~SCRIPTTEXT_ISPERSISTENT, &code);
+    hres = compile_script(script, src, delimiter, cookie, start_line, flags & ~SCRIPTTEXT_ISPERSISTENT, &code);
     if(FAILED(hres))
         return hres;
 
diff --git a/dlls/vbscript/vbscript.c b/dlls/vbscript/vbscript.c
index e068d19161..12681672ca 100644
--- a/dlls/vbscript/vbscript.c
+++ b/dlls/vbscript/vbscript.c
@@ -875,7 +875,7 @@ static HRESULT WINAPI VBScriptParse_ParseScriptText(IActiveScriptParse *iface,
         }
     }
 
-    hres = compile_script(This->ctx, pstrCode, pstrDelimiter, dwFlags, &code);
+    hres = compile_script(This->ctx, pstrCode, pstrDelimiter, dwSourceContextCookie, ulStartingLine, dwFlags, &code);
     if(FAILED(hres))
         return hres;
 
@@ -939,7 +939,8 @@ static HRESULT WINAPI VBScriptParseProcedure_ParseProcedureText(IActiveScriptPar
     if(This->thread_id != GetCurrentThreadId() || This->state == SCRIPTSTATE_CLOSED)
         return E_UNEXPECTED;
 
-    hres = compile_procedure(This->ctx, pstrCode, pstrDelimiter, dwFlags, &desc);
+    hres = compile_procedure(This->ctx, pstrCode, pstrDelimiter, dwSourceContextCookie, ulStartingLineNumber,
+                             dwFlags, &desc);
     if(FAILED(hres))
         return hres;
 
diff --git a/dlls/vbscript/vbscript.h b/dlls/vbscript/vbscript.h
index d8b571b7d1..51797fbdfc 100644
--- a/dlls/vbscript/vbscript.h
+++ b/dlls/vbscript/vbscript.h
@@ -335,9 +335,12 @@ struct _function_t {
 
 struct _vbscode_t {
     instr_t *instrs;
-    WCHAR *source;
     unsigned ref;
 
+    WCHAR *source;
+    DWORD_PTR cookie;
+    unsigned start_line;
+
     BOOL option_explicit;
 
     BOOL pending_exec;
@@ -363,8 +366,8 @@ static inline void grab_vbscode(vbscode_t *code)
 }
 
 void release_vbscode(vbscode_t*) DECLSPEC_HIDDEN;
-HRESULT compile_script(script_ctx_t*,const WCHAR*,const WCHAR*,DWORD,vbscode_t**) DECLSPEC_HIDDEN;
-HRESULT compile_procedure(script_ctx_t*,const WCHAR*,const WCHAR*,DWORD,class_desc_t**) DECLSPEC_HIDDEN;
+HRESULT compile_script(script_ctx_t*,const WCHAR*,const WCHAR*,DWORD_PTR,unsigned,DWORD,vbscode_t**) DECLSPEC_HIDDEN;
+HRESULT compile_procedure(script_ctx_t*,const WCHAR*,const WCHAR*,DWORD_PTR,unsigned,DWORD,class_desc_t**) DECLSPEC_HIDDEN;
 HRESULT exec_script(script_ctx_t*,BOOL,function_t*,vbdisp_t*,DISPPARAMS*,VARIANT*) DECLSPEC_HIDDEN;
 void release_dynamic_var(dynamic_var_t*) DECLSPEC_HIDDEN;
 IDispatch *lookup_named_item(script_ctx_t*,const WCHAR*,unsigned) DECLSPEC_HIDDEN;




More information about the wine-cvs mailing list