Jacek Caban : mshtml: Store external script text in HTMLScriptElement object.
Alexandre Julliard
julliard at winehq.org
Wed Jul 20 10:28:51 CDT 2016
Module: wine
Branch: master
Commit: f73f884884b74d20f6068a99c5e8c53ef91ce276
URL: http://source.winehq.org/git/wine.git/?a=commit;h=f73f884884b74d20f6068a99c5e8c53ef91ce276
Author: Jacek Caban <jacek at codeweavers.com>
Date: Tue Jul 19 18:39:47 2016 +0200
mshtml: Store external script text in HTMLScriptElement object.
Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/mshtml/htmlscript.c | 9 ++++++++-
dlls/mshtml/htmlscript.h | 1 +
dlls/mshtml/script.c | 12 +++++-------
3 files changed, 14 insertions(+), 8 deletions(-)
diff --git a/dlls/mshtml/htmlscript.c b/dlls/mshtml/htmlscript.c
index 9feb551..0a2d67a 100644
--- a/dlls/mshtml/htmlscript.c
+++ b/dlls/mshtml/htmlscript.c
@@ -391,6 +391,13 @@ static HRESULT HTMLScriptElement_QI(HTMLDOMNode *iface, REFIID riid, void **ppv)
return HTMLElement_QI(&This->element.node, riid, ppv);
}
+static void HTMLScriptElement_destructor(HTMLDOMNode *iface)
+{
+ HTMLScriptElement *This = impl_from_HTMLDOMNode(iface);
+ heap_free(This->src_text);
+ HTMLElement_destructor(&This->element.node);
+}
+
static HRESULT HTMLScriptElement_get_readystate(HTMLDOMNode *iface, BSTR *p)
{
HTMLScriptElement *This = impl_from_HTMLDOMNode(iface);
@@ -439,7 +446,7 @@ static void HTMLScriptElement_unlink(HTMLDOMNode *iface)
static const NodeImplVtbl HTMLScriptElementImplVtbl = {
HTMLScriptElement_QI,
- HTMLElement_destructor,
+ HTMLScriptElement_destructor,
HTMLElement_cpc,
HTMLElement_clone,
HTMLElement_handle_event,
diff --git a/dlls/mshtml/htmlscript.h b/dlls/mshtml/htmlscript.h
index ad493c9..4e40f63 100644
--- a/dlls/mshtml/htmlscript.h
+++ b/dlls/mshtml/htmlscript.h
@@ -26,6 +26,7 @@ typedef struct {
BOOL parse_on_bind;
BOOL pending_readystatechange_event;
READYSTATE readystate;
+ WCHAR *src_text; /* sctipt text downloaded from src */
} HTMLScriptElement;
typedef struct {
diff --git a/dlls/mshtml/script.c b/dlls/mshtml/script.c
index 582c9af..3503e69 100644
--- a/dlls/mshtml/script.c
+++ b/dlls/mshtml/script.c
@@ -866,22 +866,20 @@ static void script_file_available(ScriptBSC *bsc)
HTMLScriptElement *script_elem = bsc->script_elem;
HTMLInnerWindow *window = bsc->bsc.window;
ScriptHost *script_host;
- WCHAR *text;
HRESULT hres;
- hres = get_binding_text(bsc, &text);
+ assert(window != NULL);
+
+ hres = get_binding_text(bsc, &script_elem->src_text);
if(FAILED(hres))
return;
script_host = get_elem_script_host(window, script_elem);
- if(!script_host) {
- heap_free(text);
+ if(!script_host)
return;
- }
script_elem->parsed = TRUE;
- parse_elem_text(script_host, script_elem, text);
- heap_free(text);
+ parse_elem_text(script_host, script_elem, script_elem->src_text);
}
static inline ScriptBSC *impl_from_BSCallback(BSCallback *iface)
More information about the wine-cvs
mailing list