diff options
author | Ben Becker <ben.becker@10gen.com> | 2013-04-01 12:21:53 -0700 |
---|---|---|
committer | Ben Becker <ben.becker@10gen.com> | 2013-04-01 14:43:56 -0700 |
commit | f1017ee04454faace5997a3604527d3fd6bccda9 (patch) | |
tree | aa926a50ebe49e432967d32cdd0b6b444cb00330 | |
parent | 9e05b382ca858f496f0da65ebbbd42216fb95927 (diff) | |
download | mongo-f1017ee04454faace5997a3604527d3fd6bccda9.tar.gz |
SERVER-9066: avoid duplicate JS field names
-rw-r--r-- | src/mongo/scripting/engine_v8.cpp | 10 | ||||
-rw-r--r-- | src/mongo/scripting/engine_v8.h | 2 |
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; }; |