From b541195188141868d44aee60cc90a018527c833a Mon Sep 17 00:00:00 2001 From: Doug Kearns Date: Tue, 9 Jun 2015 00:15:41 +1000 Subject: [PATCH] Fix util.makeDTD. Accidentally reverted in the appropriately threatening commit 7ee5792 --- common/modules/util.jsm | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/common/modules/util.jsm b/common/modules/util.jsm index 707362d2..b0502e15 100644 --- a/common/modules/util.jsm +++ b/common/modules/util.jsm @@ -972,14 +972,24 @@ var Util = Module("Util", XPCOM([Ci.nsIObserver, Ci.nsISupportsWeakReference]), * for *obj*. */ makeDTD: function makeDTD(obj) { - let map = { "'": "'", '"': """, "%": "%", "&": "&", "<": "<", ">": ">" }; + let map = { + "'": "'", '"': """, "%": "%", + "&": "&", "<": "<", ">": ">" + }; - return iter(obj) - .map(([k, v]) => ["]/g, - m => map[m]), - "'>"].join("")) - .join("\n"); + function escape(val) { + let isDOM = DOM.isJSONXML(val); + return String.replace(val == null ? "null" : + isDOM ? DOM.toXML(val) + : val, + isDOM ? /['%]/g + : /['"%&<>]/g, + m => map[m]); + } + + return iter(obj).map(([k, v]) => + [""].join("")) + .join("\n"); }, /**