Author: [email protected]
Date: Wed Apr 8 14:05:29 2009
New Revision: 1687
Modified:
branches/bleeding_edge/src/api.cc
branches/bleeding_edge/test/cctest/test-api.cc
Log:
Fix v8::Object::DeleteHiddenValue to not bail when there are no hidden
properties.
Review URL: http://codereview.chromium.org/58016
Modified: branches/bleeding_edge/src/api.cc
==============================================================================
--- branches/bleeding_edge/src/api.cc (original)
+++ branches/bleeding_edge/src/api.cc Wed Apr 8 14:05:29 2009
@@ -2077,13 +2077,13 @@
ON_BAILOUT("v8::DeleteHiddenValue()", return false);
ENTER_V8;
i::Handle<i::JSObject> self = Utils::OpenHandle(this);
- i::Handle<i::JSObject> hidden_props(
- i::JSObject::cast(*i::GetHiddenProperties(self, false)));
+ i::Handle<i::Object> hidden_props(i::GetHiddenProperties(self, false));
if (hidden_props->IsUndefined()) {
- return false;
+ return true;
}
+ i::Handle<i::JSObject> js_obj(i::JSObject::cast(*hidden_props));
i::Handle<i::String> key_obj = Utils::OpenHandle(*key);
- return i::DeleteProperty(hidden_props, key_obj)->IsTrue();
+ return i::DeleteProperty(js_obj, key_obj)->IsTrue();
}
Modified: branches/bleeding_edge/test/cctest/test-api.cc
==============================================================================
--- branches/bleeding_edge/test/cctest/test-api.cc (original)
+++ branches/bleeding_edge/test/cctest/test-api.cc Wed Apr 8 14:05:29 2009
@@ -1293,6 +1293,9 @@
i::Heap::CollectAllGarbage();
+ // Make sure delete of a non-existent hidden value works
+ CHECK(obj->DeleteHiddenValue(key));
+
CHECK(obj->SetHiddenValue(key, v8::Integer::New(1503)));
CHECK_EQ(1503, obj->GetHiddenValue(key)->Int32Value());
CHECK(obj->SetHiddenValue(key, v8::Integer::New(2002)));
--~--~---------~--~----~------------~-------~--~----~
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
-~----------~----~----~----~------~----~------~--~---