diff options
Diffstat (limited to 'src/mongo/db/index/btree_key_generator.cpp')
-rw-r--r-- | src/mongo/db/index/btree_key_generator.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/mongo/db/index/btree_key_generator.cpp b/src/mongo/db/index/btree_key_generator.cpp index bc1910448da..2a88148ef6d 100644 --- a/src/mongo/db/index/btree_key_generator.cpp +++ b/src/mongo/db/index/btree_key_generator.cpp @@ -36,7 +36,10 @@ namespace mongo { BtreeKeyGenerator::BtreeKeyGenerator(vector<const char*> fieldNames, vector<BSONElement> fixed, bool isSparse) - : _fieldNames(fieldNames), _isSparse(isSparse), _fixed(fixed) { + : _isSparse(isSparse), _fixed(fixed) { + + for ( size_t i = 0; i < fieldNames.size(); i++ ) + _fieldNames.push_back( fieldNames[i] ); BSONObjBuilder nullKeyBuilder; for (size_t i = 0; i < fieldNames.size(); ++i) { @@ -52,7 +55,10 @@ namespace mongo { void BtreeKeyGenerator::getKeys(const BSONObj &obj, BSONObjSet *keys) const { // These are mutated as part of the getKeys call. :| - vector<const char*> fieldNames(_fieldNames); + vector<const char*> fieldNames; + for ( size_t i = 0; i < _fieldNames.size(); i++ ) + fieldNames.push_back( _fieldNames[i].c_str() ); + vector<BSONElement> fixed(_fixed); getKeysImpl(fieldNames, fixed, obj, keys); if (keys->empty() && ! _isSparse) { |