Hi all,
The last release of Wine Gecko caused a few regressions. Thanks to Alexandre, we've found the reason. The bad news is that the fix requires a new package. I've uploaded RC build to:
http://gerwazy.lo3.wroc.pl/~jcaban/wine/wine_gecko-0.9.1.cab
I'd appreciate if people that observe the regression (mostly strange crashed) could retest bugs with this build. To do so, you will need the new package and the attached patch. Also quick tests with random apps would be nice. This is a bugfix release based on the same codebase as 0.9.0 version so I don't expect any new regressions with it.
Also the last debug version was accidentally stripped. It will be fixed in this release. I'm planning to do the release tomorrow, so it will be in Git on Friday.
Thanks, Jacek
From 35f651d05f04dc80dd85451d48428d5c6174dac2 Mon Sep 17 00:00:00 2001
From: Jacek Caban jacek@codeweavers.com Date: Thu, 5 Feb 2009 00:17:09 +0100 Subject: [PATCH] mshtml: Wine Gecko 0.9.1 release. To: wine-patches wine-patches@winehq.org
--- dlls/mshtml/htmldoc.c | 4 +++- dlls/mshtml/mshtml_private.h | 1 + dlls/mshtml/mutation.c | 15 +++++++++++++++ dlls/mshtml/nsembed.c | 4 +++- dlls/mshtml/nsiface.idl | 3 ++- 5 files changed, 24 insertions(+), 3 deletions(-)
diff --git a/dlls/mshtml/htmldoc.c b/dlls/mshtml/htmldoc.c index 32da2e0..a6aa73f 100644 --- a/dlls/mshtml/htmldoc.c +++ b/dlls/mshtml/htmldoc.c @@ -214,8 +214,10 @@ static ULONG WINAPI HTMLDocument_Release(IHTMLDocument2 *iface)
ConnectionPointContainer_Destroy(&This->cp_container);
- if(This->nsdoc) + if(This->nsdoc) { + remove_mutation_observer(This->nscontainer, This->nsdoc); nsIDOMHTMLDocument_Release(This->nsdoc); + } if(This->nscontainer) NSContainer_Release(This->nscontainer);
diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h index e4c98a7..b67c485 100644 --- a/dlls/mshtml/mshtml_private.h +++ b/dlls/mshtml/mshtml_private.h @@ -510,6 +510,7 @@ void NSContainer_Release(NSContainer*);
void init_mutation(NSContainer*); void set_mutation_observer(NSContainer*,nsIDOMHTMLDocument*); +void remove_mutation_observer(NSContainer*,nsIDOMHTMLDocument*);
void HTMLDocument_LockContainer(HTMLDocument*,BOOL); void show_context_menu(HTMLDocument*,DWORD,POINT*,IDispatch*); diff --git a/dlls/mshtml/mutation.c b/dlls/mshtml/mutation.c index ea61d5a..ab9649c 100644 --- a/dlls/mshtml/mutation.c +++ b/dlls/mshtml/mutation.c @@ -55,6 +55,21 @@ void set_mutation_observer(NSContainer *nscontainer, nsIDOMHTMLDocument *nshtmld nsIDOMNSDocument_Release(nsdoc); }
+void remove_mutation_observer(NSContainer *nscontainer, nsIDOMHTMLDocument *nshtmldoc) +{ + nsIDOMNSDocument *nsdoc; + nsresult nsres; + + nsres = nsIDOMHTMLDocument_QueryInterface(nshtmldoc, &IID_nsIDOMNSDocument, (void**)&nsdoc); + if(NS_FAILED(nsres)) { + ERR("Could not get nsIDOMNSDocument: %08x\n", nsres); + return; + } + + nsIDOMNSDocument_WineRemoveObserver(nsdoc, NSDOCOBS(nscontainer)); + nsIDOMNSDocument_Release(nsdoc); +} + #define IE_MAJOR_VERSION 7 #define IE_MINOR_VERSION 0
diff --git a/dlls/mshtml/nsembed.c b/dlls/mshtml/nsembed.c index ee386ac..16ac21e 100644 --- a/dlls/mshtml/nsembed.c +++ b/dlls/mshtml/nsembed.c @@ -857,8 +857,10 @@ void update_nsdocument(HTMLDocument *doc) return; }
- if(doc->nsdoc) + if(doc->nsdoc) { + remove_mutation_observer(doc->nscontainer, doc->nsdoc); nsIDOMHTMLDocument_Release(doc->nsdoc); + }
doc->nsdoc = nsdoc;
diff --git a/dlls/mshtml/nsiface.idl b/dlls/mshtml/nsiface.idl index 219ac0c..ef64145 100644 --- a/dlls/mshtml/nsiface.idl +++ b/dlls/mshtml/nsiface.idl @@ -23,7 +23,7 @@ * compatible with XPCOM, usable in C code. */
-cpp_quote("#define GECKO_VERSION "0.9.0"") +cpp_quote("#define GECKO_VERSION "0.9.1"") cpp_quote("#define GECKO_VERSION_STRING "Wine Gecko " GECKO_VERSION")
import "wtypes.idl"; @@ -873,6 +873,7 @@ interface nsIDOMNSDocument : nsISupports
/* Wine extensions */ nsresult WineAddObserver(nsIDocumentObserver *aObserver); + nsresult WineRemoveObserver(nsIDocumentObserver *aObserver); nsresult WineAddScriptRunner(nsIRunnable *aRunnable); }
Jacek Caban wrote:
Hi all,
The last release of Wine Gecko caused a few regressions. Thanks to Alexandre, we've found the reason. The bad news is that the fix requires a new package. I've uploaded RC build to:
http://gerwazy.lo3.wroc.pl/~jcaban/wine/wine_gecko-0.9.1.cab
I'd appreciate if people that observe the regression (mostly strange crashed) could retest bugs with this build. To do so, you will need the new package and the attached patch. Also quick tests with random apps would be nice. This is a bugfix release based on the same codebase as 0.9.0 version so I don't expect any new regressions with it.
Is this version compatible with Wine 1.0.1 by chance?
Thanks, Scott Ritchie
Scott Ritchie wrote:
Jacek Caban wrote:
Hi all,
The last release of Wine Gecko caused a few regressions. Thanks to Alexandre, we've found the reason. The bad news is that the fix requires a new package. I've uploaded RC build to:
http://gerwazy.lo3.wroc.pl/~jcaban/wine/wine_gecko-0.9.1.cab
I'd appreciate if people that observe the regression (mostly strange crashed) could retest bugs with this build. To do so, you will need the new package and the attached patch. Also quick tests with random apps would be nice. This is a bugfix release based on the same codebase as 0.9.0 version so I don't expect any new regressions with it.
Is this version compatible with Wine 1.0.1 by chance?
No, it's technically impossible.
Jacek
Hi Jacek,
"Jacek Caban" jacek@codeweavers.com wrote in message news:498A2A37.6070102@codeweavers.com...
Hi all,
Also the last debug version was accidentally stripped. It will be fixed in this release. I'm planning to do the release tomorrow, so it will be in Git on Friday.
I've test a few apps (TopStyle, Web Page maker), they appear to not crash any more than before ;).
The patch attached didn't cleanly apply to todays git. (but did to a 1.1.14 tree)
Best Regards Alistair Leslie-Hughes
On Thu, Feb 05, 2009 at 12:52:23AM +0100, Jacek Caban wrote:
The last release of Wine Gecko caused a few regressions. Thanks to Alexandre, we've found the reason. The bad news is that the fix requires a new package. I've uploaded RC build to:
http://gerwazy.lo3.wroc.pl/~jcaban/wine/wine_gecko-0.9.1.cab
I'd appreciate if people that observe the regression (mostly strange crashed) could retest bugs with this build. To do so, you will need the new package and the attached patch. Also quick tests with random apps would be nice. This is a bugfix release based on the same codebase as 0.9.0 version so I don't expect any new regressions with it.
Still get a crash running iexplore out of the build directory: From 8e39646ac4d256b813ff69a23ba0c62ab4f08d33 (1.1.14 release) mkdir gecko put above wine_gecko cab in gecko directory mkdir build cd build ../configure make depend && make -j3 programs/iexplore/iexplore
And crash inside xul.dll. A quick check suggests it's the same crash as I logged a stacktrace in bug 16785, modulo a constant offset of 0x50 across the xul.dll, and the stack trace is a different depth in xul (but the deep end matches)
Paul TBBle Hampson wrote:
On Thu, Feb 05, 2009 at 12:52:23AM +0100, Jacek Caban wrote:
The last release of Wine Gecko caused a few regressions. Thanks to Alexandre, we've found the reason. The bad news is that the fix requires a new package. I've uploaded RC build to:
http://gerwazy.lo3.wroc.pl/~jcaban/wine/wine_gecko-0.9.1.cab
I'd appreciate if people that observe the regression (mostly strange crashed) could retest bugs with this build. To do so, you will need the new package and the attached patch. Also quick tests with random apps would be nice. This is a bugfix release based on the same codebase as 0.9.0 version so I don't expect any new regressions with it.
Still get a crash running iexplore out of the build directory: From 8e39646ac4d256b813ff69a23ba0c62ab4f08d33 (1.1.14 release) mkdir gecko put above wine_gecko cab in gecko directory mkdir build cd build ../configure make depend && make -j3 programs/iexplore/iexplore
And crash inside xul.dll. A quick check suggests it's the same crash as I logged a stacktrace in bug 16785, modulo a constant offset of 0x50 across the xul.dll, and the stack trace is a different depth in xul (but the deep end matches)
Alexandre has found the problem. Gecko can't find fonts when Wine in ran from build dir. As a temporary workaround you may copy content of fonts directory to fonts directory in build dir.
Jacek
On Thu, Feb 05, 2009 at 10:13:48PM +0100, Jacek Caban wrote:
Paul TBBle Hampson wrote:
On Thu, Feb 05, 2009 at 12:52:23AM +0100, Jacek Caban wrote:
The last release of Wine Gecko caused a few regressions. Thanks to Alexandre, we've found the reason. The bad news is that the fix requires a new package. I've uploaded RC build to:
http://gerwazy.lo3.wroc.pl/~jcaban/wine/wine_gecko-0.9.1.cab
Still get a crash running iexplore out of the build directory: From 8e39646ac4d256b813ff69a23ba0c62ab4f08d33 (1.1.14 release) mkdir gecko put above wine_gecko cab in gecko directory mkdir build cd build ../configure make depend && make -j3 programs/iexplore/iexplore
And crash inside xul.dll. A quick check suggests it's the same crash as I logged a stacktrace in bug 16785, modulo a constant offset of 0x50 across the xul.dll, and the stack trace is a different depth in xul (but the deep end matches)
Alexandre has found the problem. Gecko can't find fonts when Wine in ran from build dir. As a temporary workaround you may copy content of fonts directory to fonts directory in build dir.
Thanks. I've updated the relevant bug accordingly.
Paul TBBle Hampson schrieb:
On Thu, Feb 05, 2009 at 12:52:23AM +0100, Jacek Caban wrote:
The last release of Wine Gecko caused a few regressions. Thanks to Alexandre, we've found the reason. The bad news is that the fix requires a new package. I've uploaded RC build to:
http://gerwazy.lo3.wroc.pl/~jcaban/wine/wine_gecko-0.9.1.cab
I'd appreciate if people that observe the regression (mostly strange crashed) could retest bugs with this build. To do so, you will need the new package and the attached patch. Also quick tests with random apps would be nice. This is a bugfix release based on the same codebase as 0.9.0 version so I don't expect any new regressions with it.
Still get a crash running iexplore out of the build directory: From 8e39646ac4d256b813ff69a23ba0c62ab4f08d33 (1.1.14 release) mkdir gecko put above wine_gecko cab in gecko directory mkdir build cd build ../configure make depend && make -j3 programs/iexplore/iexplore
And crash inside xul.dll. A quick check suggests it's the same crash as I logged a stacktrace in bug 16785, modulo a constant offset of 0x50 across the xul.dll, and the stack trace is a different depth in xul (but the deep end matches)
Yes, still the same for me. I also hit this bug with the not installed wine with the patch applied and the new gecko.
Cheers Rico
Jacek Caban wrote:
Hi all,
The last release of Wine Gecko caused a few regressions.
Yes it did and some are still not fixed. Flash does not work anymore on all the pages. This really needs to be fixed.
The plugin came from windows Firefox 3.0.5 where it works fine (under Wine).
Vitaliy.
Vitaliy Margolen wrote:
Jacek Caban wrote:
Hi all,
The last release of Wine Gecko caused a few regressions.
Yes it did and some are still not fixed. Flash does not work anymore on all the pages. This really needs to be fixed.
I've been looking on it for a while and I didn't find the fix. I'm attaching a hack that might help if someone is interested in working on it.
Jacek
diff --git a/dlls/mshtml/nsio.c b/dlls/mshtml/nsio.c index 7c402b2..9d3b1c6 100644 --- a/dlls/mshtml/nsio.c +++ b/dlls/mshtml/nsio.c @@ -2165,10 +2165,26 @@ static nsresult NSAPI nsIOService_NewChannelFromURI(nsIIOService *iface, nsIURI nsIChannel *channel = NULL; nsChannel *ret; nsIWineURI *wine_uri; + nsACString schema_str; + const char *schema; + BOOL b; nsresult nsres;
TRACE("(%p %p)\n", aURI, _retval);
+ /* + * Our wrapped nsChannel object doesn't work for Flash, so we use URI heuristic + * and return necko object for *.swf channels. + */ + nsACString_Init(&schema_str, NULL); + nsIURI_GetScheme(aURI, &schema_str); + nsACString_GetData(&schema_str, &schema); + b = !strstr(schema, ".swf"); + nsACString_Finish(&schema_str); + + if(b) + return nsIIOService_NewChannelFromURI(nsio, aURI, _retval); + nsres = nsIIOService_NewChannelFromURI(nsio, aURI, &channel); if(NS_FAILED(nsres) && nsres != NS_ERROR_UNKNOWN_PROTOCOL) { WARN("NewChannelFromURI failed: %08x\n", nsres);