So, looking a bit further, there are actually 2 issues. The first is that xulrunner doesn't set the signon.rememberSignons pref to true, which might have been the case in mozilla. This is understandable, since the main use of xulrunner is supposed to be for embedding and that all embedding applications don't have a profile directory to store the password manager database and don't necessarily want to store the passwords even when they have a profile directory.
That means kazehakase should set this preference to true, like it does for some other preferences. The second issue is that when signon.rememberSignons is false, it still displays the checkbox to ask if the user want to save the password. Both issues are addresses by the attached patch. Note that the 'if (aCheckValue)' replacing 'if (aCheckMsg)' is enough to be sure it doesn't crash because aCheckValue and aCheckMsg are set together at xulrunner level. If aCheckValue is null, that means that we don't want the checkbox, and its label (aCheckMsg) is also NULL. On the contrary, if aCheckValue points to a boolean for the check box to be pre-checked or not, aCheckMsg also points to the message that should be displayed as the checkbox label. The setting of signon.rememberSignons allows the user to set it to false if he prefers. He just needs to go to about:config and toggle its value. 岩井さん, if you want sponsorship for a -2 release, having worked on the issue, I can sponsor an upload for you. Or maybe you'd prefer I just NMUed. Note that the package available on people.debian.org/~glandium/ has been updated and was built with the attached patch. Cheers Mike
diff -u kazehakase-0.3.9/debian/patches/00list kazehakase-0.3.9/debian/patches/00list --- kazehakase-0.3.9/debian/patches/00list +++ kazehakase-0.3.9/debian/patches/00list @@ -3,0 +4 @@ +50_passwordmgr diff -u kazehakase-0.3.9/debian/changelog kazehakase-0.3.9/debian/changelog --- kazehakase-0.3.9/debian/changelog +++ kazehakase-0.3.9/debian/changelog @@ -1,3 +1,14 @@ +kazehakase (0.3.9-1.1) unstable; urgency=low + + * debian/patches/50_passwordmgr.dpatch: Fixed crasher in + GtkPromptService.cpp when signon.rememberSignons is not set, which + happens to be the case with xulrunner but not with mozilla. Also + set it if not already user set. (closes:#380466) + Thanks to Gerfried Fuchs and Yavor Doganov for their help. + * debian/patches/00list: Updated accordingly + + -- Mike Hommey <[EMAIL PROTECTED]> Sat, 26 Aug 2006 11:16:06 +0200 + kazehakase (0.3.9-1) unstable; urgency=low * New upstream release. only in patch2: unchanged: --- kazehakase-0.3.9.orig/debian/patches/50_passwordmgr.dpatch +++ kazehakase-0.3.9/debian/patches/50_passwordmgr.dpatch @@ -0,0 +1,45 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 50_passwordmgr.dpatch by <[EMAIL PROTECTED]> +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: Fixed crasher in GtkPromptService.cpp when signon.rememberSignons is not set, +## DP: which happens to be the case with xulrunner but not with mozilla. Also set it +## DP: if not already user set. +## DP: Thanks to Gerfried Fuchs and Yavor Doganov for their help. + [EMAIL PROTECTED]@ + +--- kazehakase/src/mozilla/GtkPromptService.cpp.orig 2006-08-26 08:50:40.906614000 +0200 ++++ kazehakase/src/mozilla/GtkPromptService.cpp 2006-08-26 11:10:20.130282750 +0200 +@@ -344,7 +344,7 @@ + kz_prompt_dialog_set_message_text(prompt, cText.get()); + kz_prompt_dialog_set_user(prompt, cUser.get()); + kz_prompt_dialog_set_password(prompt, cPass.get()); +- if (aCheckMsg) ++ if (aCheckValue) + { + kz_prompt_dialog_set_check_message(prompt, cCheckMsg.get()); + kz_prompt_dialog_set_check_value(prompt, *aCheckValue); +--- kazehakase/src/mozilla/mozilla-prefs.cpp.orig 2006-08-26 11:10:04.545308750 +0200 ++++ kazehakase/src/mozilla/mozilla-prefs.cpp 2006-08-26 11:10:26.526682500 +0200 +@@ -95,6 +95,7 @@ + gboolean override = FALSE, use_proxy = FALSE; + gchar proxy_name[1024]; + gboolean conf_exist = FALSE, use_proxy_exist = FALSE; ++ gboolean signon_remember; + KzProxyItem *item = NULL; + + // set user agent name +@@ -132,6 +133,12 @@ + g_free(value); + } + ++ if (!mozilla_prefs_get_boolean("signon.rememberSignons", &signon_remember)) ++ { ++ mozilla_prefs_set_boolean("signon.rememberSignons", ++ true); ++ } ++ + use_proxy_exist = KZ_CONF_GET("Global", "use_proxy", use_proxy, BOOL); + + conf_exist = KZ_CONF_GET("Global", "proxy_name",