summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Becker <ben.becker@10gen.com>2013-04-01 12:21:53 -0700
committerBen Becker <ben.becker@10gen.com>2013-04-01 14:43:56 -0700
commitf1017ee04454faace5997a3604527d3fd6bccda9 (patch)
treeaa926a50ebe49e432967d32cdd0b6b444cb00330
parent9e05b382ca858f496f0da65ebbbd42216fb95927 (diff)
downloadmongo-f1017ee04454faace5997a3604527d3fd6bccda9.tar.gz
SERVER-9066: avoid duplicate JS field names
-rw-r--r--src/mongo/scripting/engine_v8.cpp10
-rw-r--r--src/mongo/scripting/engine_v8.h2
2 files changed, 6 insertions, 6 deletions
diff --git a/src/mongo/scripting/engine_v8.cpp b/src/mongo/scripting/engine_v8.cpp
index 98d62d5c16f..bc61c8f3596 100644
--- a/src/mongo/scripting/engine_v8.cpp
+++ b/src/mongo/scripting/engine_v8.cpp
@@ -130,7 +130,7 @@ namespace mongo {
string key = toSTLString(name);
BSONHolder* holder = unwrapHolder(info.Holder());
holder->_removed.erase(key);
- holder->_extra.push_back(key);
+ holder->_extra.insert(key);
holder->_modified = true;
// set into JS object
@@ -159,7 +159,7 @@ namespace mongo {
arr->Set(i, name);
}
- for (list<string>::iterator it = holder->_extra.begin();
+ for (set<string>::iterator it = holder->_extra.begin();
it != holder->_extra.end(); it++) {
string sname = *it;
if (added.count(sname))
@@ -174,7 +174,7 @@ namespace mongo {
string key = toSTLString(name);
BSONHolder* holder = unwrapHolder(info.Holder());
holder->_removed.insert(key);
- holder->_extra.remove(key);
+ holder->_extra.erase(key);
holder->_modified = true;
// also delete in JS obj
@@ -226,7 +226,7 @@ namespace mongo {
string key = str::stream() << index;
BSONHolder* holder = unwrapHolder(info.Holder());
holder->_removed.insert(key);
- holder->_extra.remove(key);
+ holder->_extra.erase(key);
holder->_modified = true;
// also delete in JS obj
@@ -265,7 +265,7 @@ namespace mongo {
string key = str::stream() << index;
BSONHolder* holder = unwrapHolder(info.Holder());
holder->_removed.erase(key);
- holder->_extra.push_back(key);
+ holder->_extra.insert(key);
holder->_modified = true;
// set into JS object
diff --git a/src/mongo/scripting/engine_v8.h b/src/mongo/scripting/engine_v8.h
index 1406da51cac..faf570c18a6 100644
--- a/src/mongo/scripting/engine_v8.h
+++ b/src/mongo/scripting/engine_v8.h
@@ -447,7 +447,7 @@ namespace mongo {
V8Scope* _scope;
BSONObj _obj;
bool _modified;
- list<string> _extra;
+ set<string> _extra;
set<string> _removed;
};