gtkmozembed calls EmbedPrivate::Destroy() even when it hasn't called EmbedPrivate::Init(), which is wrong, and causes a null pointer dereference. This can happen when a gtkmozembed widget has been created, but never realized. E.g., never 'show' the widget and exit. Crash. The fix is to have gtkmozembed check (the same way EmbedPrivate checks) if EmbedPrivate has been Init()ed before Destroy()ing. - Steven Brown Index: embedding/browser/gtk/src/gtkmozembed2.cpp =================================================================== RCS file: /cvsroot/mozilla/embedding/browser/gtk/src/gtkmozembed2.cpp,v retrieving revision 1.33 diff -u -r1.33 gtkmozembed2.cpp --- embedding/browser/gtk/src/gtkmozembed2.cpp 1 Jun 2004 18:37:36 -0000 1.33 +++ embedding/browser/gtk/src/gtkmozembed2.cpp 2 Jul 2004 02:45:00 -0000 @@ -556,7 +556,12 @@ embedPrivate = (EmbedPrivate *)embed->data; if (embedPrivate) { - embedPrivate->Destroy(); + + // Destroy the widget only if it's been Init()ed. + if(embedPrivate->mMozWindowWidget != 0) { + embedPrivate->Destroy(); + } + delete embedPrivate; embed->data = NULL; }