summaryrefslogtreecommitdiff
path: root/db/jsobj.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'db/jsobj.cpp')
-rw-r--r--db/jsobj.cpp10
1 files changed, 6 insertions, 4 deletions
diff --git a/db/jsobj.cpp b/db/jsobj.cpp
index e392385827f..25ab8a84dbb 100644
--- a/db/jsobj.cpp
+++ b/db/jsobj.cpp
@@ -741,16 +741,18 @@ namespace mongo {
BSONElement BSONObj::getFieldDottedOrArray(const char *&name) const {
const char *p = strchr(name, '.');
- string left;
+
+ BSONElement sub;
+
if ( p ) {
- left = string(name, p-name);
+ sub = getField( string(name, p-name) );
name = p + 1;
}
else {
- left = string(name);
+ sub = getField( name );
name = name + strlen(name);
}
- BSONElement sub = getField(left.c_str());
+
if ( sub.eoo() )
return nullElement;
else if ( sub.type() == Array || name[0] == '\0')