diff options
author | Filipe David Borba Manana <fdmanana@apache.org> | 2010-11-23 16:29:30 +0000 |
---|---|---|
committer | Filipe David Borba Manana <fdmanana@apache.org> | 2010-11-23 16:29:30 +0000 |
commit | 2e0083ef15434f19b18b593a49e66cc3927265b0 (patch) | |
tree | 5dac8933b6aa59a747e53222da524f0a895d966d /share/server/util.js | |
parent | bb80c828c6cd3cc062cb02876a2ec29e6b196531 (diff) | |
download | couchdb-2e0083ef15434f19b18b593a49e66cc3927265b0.tar.gz |
Seal documents before passing them to map functions (JavaScript view server only).
This prevents one map function from modifying a document before it's passed to another map function.
Has no effect on array fields for some Spidermonkey versions (see https://bugzilla.mozilla.org/show_bug.cgi?id=449657).
Closes COUCHDB-925.
git-svn-id: https://svn.apache.org/repos/asf/couchdb/trunk@1038193 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'share/server/util.js')
-rw-r--r-- | share/server/util.js | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/share/server/util.js b/share/server/util.js index 5b213e0ce..e8828d074 100644 --- a/share/server/util.js +++ b/share/server/util.js @@ -98,7 +98,13 @@ var Couch = { }, recursivelySeal : function(obj) { // seal() is broken in current Spidermonkey - seal(obj); + try { + seal(obj); + } catch (x) { + // Sealing of arrays broken in some SpiderMonkey versions. + // https://bugzilla.mozilla.org/show_bug.cgi?id=449657 + return; + } for (var propname in obj) { if (typeof obj[propname] == "object") { arguments.callee(obj[propname]); |