Jacek Caban wrote:
c24b7d0d0c498ec98785b93eba54b41d53ab2c9b diff --git a/dlls/shdocvw/navigate.c b/dlls/shdocvw/navigate.c index 9c4893c..40d4a06 100644 --- a/dlls/shdocvw/navigate.c +++ b/dlls/shdocvw/navigate.c @@ -316,7 +316,7 @@ static IBindStatusCallback *create_callb return BINDSC(ret); }
-static void on_before_navigate2(WebBrowser *This, PBYTE post_data, ULONG post_data_len, +static void on_before_navigate2(WebBrowser *This, LPWSTR url, PBYTE post_data, ULONG post_data_len, LPWSTR headers, VARIANT_BOOL *cancel) { VARIANT var_url, var_flags, var_frame_name, var_post_data, var_post_data2, var_headers; @@ -367,7 +367,7 @@ static void on_before_navigate2(WebBrows V_VT(params+5) = (VT_BYREF|VT_VARIANT); V_VARIANTREF(params+5) = &var_url; V_VT(&var_url) = VT_BSTR;
- V_BSTR(&var_url) = SysAllocString(This->url);
V_BSTR(&var_url) = url;
V_VT(params+6) = (VT_DISPATCH); V_DISPATCH(params+6) = (IDispatch*)WEBBROWSER2(This);
BSTR and LPWSTR are not interchangable. A lot of the time you can get away with it, but if anything tries to access the length that prefixes a BSTR on the LPWSTR then bad things will happen.