From cd7a8eeda9b8170f9174d1536f9bca46a653c52a Mon Sep 17 00:00:00 2001 From: Doug Kearns Date: Thu, 18 Jun 2015 17:38:43 +1000 Subject: [PATCH] Make use of callable() in update(). --- common/modules/base.jsm | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/common/modules/base.jsm b/common/modules/base.jsm index 34754a96..763014ee 100644 --- a/common/modules/base.jsm +++ b/common/modules/base.jsm @@ -715,6 +715,11 @@ function isString(val) { /** * Returns true if and only if its sole argument may be called * as a function. This includes classes and function objects. + * + * Excludes callable DOM objects: https://bugzil.la/268945 + * + * @param {*} val + * @returns {boolean} */ function callable(val) { return typeof val === "function" && !(val instanceof Ci.nsIDOMElement); @@ -804,7 +809,7 @@ function update(target) { desc = desc.value.init(k, target) || desc.value; try { - if (typeof desc.value === "function" && target.__proto__ && !(desc.value instanceof Ci.nsIDOMElement /* wtf? */)) { + if (callable(desc.value) && target.__proto__) { let func = desc.value.wrapped || desc.value; if (!func.superapply) { func.__defineGetter__("super", function get_super() {