Index: src/objects.cc |
diff --git a/src/objects.cc b/src/objects.cc |
index 79dda37866f3e452ed6d1a33862e8375d5fe68b5..fd2a2c6ecf5fad06ae458acb5e92aeb4630c1863 100644 |
--- a/src/objects.cc |
+++ b/src/objects.cc |
@@ -8659,7 +8659,7 @@ static Maybe<bool> GetKeys_Internal(Isolate* isolate, |
: PrototypeIterator::END_AT_NULL; |
for (PrototypeIterator iter(isolate, object, |
PrototypeIterator::START_AT_RECEIVER, end); |
- !iter.IsAtEnd(); iter.Advance()) { |
+ !iter.IsAtEnd();) { |
Handle<JSReceiver> current = |
PrototypeIterator::GetCurrent<JSReceiver>(iter); |
Maybe<bool> result = Just(false); // Dummy initialization. |
@@ -8675,6 +8675,9 @@ static Maybe<bool> GetKeys_Internal(Isolate* isolate, |
} |
MAYBE_RETURN(result, Nothing<bool>()); |
if (!result.FromJust()) break; // |false| means "stop iterating". |
+ if (!iter.AdvanceFollowingProxies(PrototypeIterator::STOP_EARLY)) { |
+ return Nothing<bool>(); |
+ } |
} |
return Just(true); |
} |