diff --git a/common/modules/dom.jsm b/common/modules/dom.jsm index 98b3cbc4..1167feba 100644 --- a/common/modules/dom.jsm +++ b/common/modules/dom.jsm @@ -1540,6 +1540,12 @@ var DOM = Class("DOM", { function tag(args, namespaces) { let _namespaces = namespaces; + // Deal with common error case + if (args == null) { + util.reportError(Error("Unexpected null when processing XML.")); + args = ["html:i", {}, "[NULL]"]; + } + if (isinstance(args, ["String", "Number", "Boolean", _])) return doc.createTextNode(args); if (isXML(args)) @@ -1575,7 +1581,7 @@ var DOM = Class("DOM", { for (var key in attr) { if (/^xmlns(?:$|:)/.test(key)) { if (_namespaces === namespaces) - namespaces = update({}, namespaces); + namespaces = Object.create(namespaces); namespaces[key.substr(6)] = namespaces[attr[key]] || attr[key]; }} diff --git a/common/modules/prefs.jsm b/common/modules/prefs.jsm index f801f947..b0fdd176 100644 --- a/common/modules/prefs.jsm +++ b/common/modules/prefs.jsm @@ -111,10 +111,11 @@ var Prefs = Module("prefs", XPCOM([Ci.nsIObserver, Ci.nsISupportsWeakReference]) switch (type) { case Ci.nsIPrefBranch.PREF_STRING: let value = this.branch.getComplexValue(name, Ci.nsISupportsString).data; - // try in case it's a localized string (will throw an exception if not) - if (!this.branch.prefIsLocked(name) && !this.branch.prefHasUserValue(name) && - RegExp("chrome://.+/locale/.+\\.properties").test(value)) - value = this.branch.getComplexValue(name, Ci.nsIPrefLocalizedString).data; + try { + if (/^[a-z0-9-]+:/i.test(value)) + value = this.branch.getComplexValue(name, Ci.nsIPrefLocalizedString).data; + } + catch (e) {} return value; case Ci.nsIPrefBranch.PREF_INT: return this.branch.getIntPref(name);