diff options
author | jochen@chromium.org <jochen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-04-22 15:00:43 +0000 |
---|---|---|
committer | jochen@chromium.org <jochen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-04-22 15:00:43 +0000 |
commit | 80b0c8c1adf1991387a038ec157f09b6c81caa45 (patch) | |
tree | 01f7e24745f91c8d72e0bdd009c4a2a6901aebfd /extensions/renderer/module_system.cc | |
parent | 44d7c9d4cbbe8e74c1089fc7334c33d387c6d1ac (diff) | |
download | chromium_src-80b0c8c1adf1991387a038ec157f09b6c81caa45.zip chromium_src-80b0c8c1adf1991387a038ec157f09b6c81caa45.tar.gz chromium_src-80b0c8c1adf1991387a038ec157f09b6c81caa45.tar.bz2 |
PropertyCallbackInfo::This should be a primitive value
It's possible to take any callback and invoke it e.g. on a string. In
this case, "This" is a Value and not an Object.
Update extension callsites to explicitly check for Object.
BUG=v8:3274
R=yangguo@chromium.org
TBR=kalman@chromium.org
Review URL: https://codereview.chromium.org/247043003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@265253 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'extensions/renderer/module_system.cc')
-rw-r--r-- | extensions/renderer/module_system.cc | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/extensions/renderer/module_system.cc b/extensions/renderer/module_system.cc index 98daa20..a10fabd 100644 --- a/extensions/renderer/module_system.cc +++ b/extensions/renderer/module_system.cc @@ -435,9 +435,14 @@ void ModuleSystem::LazyFieldGetterInner( // Delete the getter and set this field to |new_field| so the same object is // returned every time a certain API is accessed. - v8::Handle<v8::Object> object = info.This(); - object->Delete(property); - object->Set(property, new_field); + v8::Handle<v8::Value> val = info.This(); + if (val->IsObject()) { + v8::Handle<v8::Object> object = v8::Handle<v8::Object>::Cast(val); + object->Delete(property); + object->Set(property, new_field); + } else { + NOTREACHED(); + } info.GetReturnValue().Set(new_field); } |