summaryrefslogtreecommitdiff
path: root/src/mongo/db/index/btree_key_generator.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/index/btree_key_generator.cpp')
-rw-r--r--src/mongo/db/index/btree_key_generator.cpp10
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) {