Changeset 19183 in webkit for trunk/JavaScriptCore/bindings/NP_jsobject.cpp
- Timestamp:
- Jan 26, 2007, 8:50:17 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/bindings/NP_jsobject.cpp
r18461 r19183 49 49 } 50 50 51 static void jsDeallocate(NPObject* obj) 52 { 51 static void jsDeallocate(NPObject* npObj) 52 { 53 JavaScriptObject* obj = (JavaScriptObject*)npObj; 54 55 if (obj->rootObject && obj->rootObject->isValid()) 56 obj->rootObject->gcUnprotect(obj->imp); 57 58 if (obj->rootObject) 59 obj->rootObject->deref(); 60 61 if (obj->originRootObject) 62 obj->originRootObject->deref(); 63 53 64 free(obj); 54 65 } … … 62 73 static bool _isSafeScript(JavaScriptObject* obj) 63 74 { 64 if (obj->originRootObject) { 65 Interpreter* originInterpreter = obj->originRootObject->interpreter(); 66 if (originInterpreter) 67 return originInterpreter->isSafeScript(obj->rootObject->interpreter()); 68 } 69 return true; 70 } 71 72 NPObject* _NPN_CreateScriptObject (NPP npp, JSObject* imp, const RootObject* originRootObject, const RootObject* rootObject) 75 if (!obj->originRootObject || !obj->rootObject) 76 return true; 77 78 if (!obj->originRootObject->isValid() || !obj->rootObject->isValid()) 79 return false; 80 81 return obj->originRootObject->interpreter()->isSafeScript(obj->rootObject->interpreter()); 82 } 83 84 NPObject* _NPN_CreateScriptObject(NPP npp, JSObject* imp, PassRefPtr<RootObject> originRootObject, PassRefPtr<RootObject> rootObject) 73 85 { 74 86 JavaScriptObject* obj = (JavaScriptObject*)_NPN_CreateObject(npp, NPScriptObjectClass); 75 87 88 obj->originRootObject = originRootObject.releaseRef(); 89 obj->rootObject = rootObject.releaseRef(); 90 91 if (obj->rootObject) 92 obj->rootObject->gcProtect(imp); 76 93 obj->imp = imp; 77 obj->originRootObject = originRootObject; 78 obj->rootObject = rootObject; 79 80 addNativeReference(rootObject, imp); 81 82 return (NPObject *)obj; 94 95 return (NPObject*)obj; 83 96 } 84 97 … … 120 133 121 134 // Lookup the function object. 122 ExecState* exec = obj->rootObject->interpreter()->globalExec(); 135 RootObject* rootObject = obj->rootObject; 136 if (!rootObject || !rootObject->isValid()) 137 return false; 138 139 ExecState* exec = rootObject->interpreter()->globalExec(); 123 140 JSLock lock; 124 141 JSValue* func = obj->imp->get(exec, identifierFromNPIdentifier(i->value.string)); … … 157 174 return false; 158 175 159 ExecState* exec = obj->rootObject->interpreter()->globalExec(); 176 RootObject* rootObject = obj->rootObject; 177 if (!rootObject || !rootObject->isValid()) 178 return false; 179 180 ExecState* exec = rootObject->interpreter()->globalExec(); 160 181 161 182 JSLock lock; … … 163 184 unsigned int UTF16Length; 164 185 convertNPStringToUTF16(s, &scriptString, &UTF16Length); // requires free() of returned memory 165 Completion completion = obj->rootObject->interpreter()->evaluate(UString(), 0, UString((const UChar*)scriptString,UTF16Length));186 Completion completion = rootObject->interpreter()->evaluate(UString(), 0, UString((const UChar*)scriptString,UTF16Length)); 166 187 ComplType type = completion.complType(); 167 188 … … 192 213 return false; 193 214 194 ExecState* exec = obj->rootObject->interpreter()->globalExec(); 215 RootObject* rootObject = obj->rootObject; 216 if (!rootObject || !rootObject->isValid()) 217 return false; 218 219 ExecState* exec = rootObject->interpreter()->globalExec(); 195 220 PrivateIdentifier* i = (PrivateIdentifier*)propertyName; 196 221 … … 231 256 return false; 232 257 233 ExecState* exec = obj->rootObject->interpreter()->globalExec(); 258 RootObject* rootObject = obj->rootObject; 259 if (!rootObject || !rootObject->isValid()) 260 return false; 261 262 ExecState* exec = rootObject->interpreter()->globalExec(); 234 263 JSLock lock; 235 264 PrivateIdentifier* i = (PrivateIdentifier*)propertyName; … … 254 283 return false; 255 284 256 ExecState* exec = obj->rootObject->interpreter()->globalExec(); 285 RootObject* rootObject = obj->rootObject; 286 if (!rootObject || !rootObject->isValid()) 287 return false; 288 289 ExecState* exec = rootObject->interpreter()->globalExec(); 257 290 PrivateIdentifier* i = (PrivateIdentifier*)propertyName; 258 291 if (i->isString) { … … 282 315 return false; 283 316 284 ExecState* exec = obj->rootObject->interpreter()->globalExec(); 317 RootObject* rootObject = obj->rootObject; 318 if (!rootObject || !rootObject->isValid()) 319 return false; 320 321 ExecState* exec = rootObject->interpreter()->globalExec(); 285 322 PrivateIdentifier* i = (PrivateIdentifier*)propertyName; 286 323 JSLock lock; … … 307 344 return false; 308 345 309 ExecState* exec = obj->rootObject->interpreter()->globalExec(); 346 RootObject* rootObject = obj->rootObject; 347 if (!rootObject || !rootObject->isValid()) 348 return false; 349 350 ExecState* exec = rootObject->interpreter()->globalExec(); 310 351 JSLock lock; 311 352 JSValue* func = obj->imp->get(exec, identifierFromNPIdentifier(i->value.string)); … … 323 364 if (o->_class == NPScriptObjectClass) { 324 365 JavaScriptObject* obj = (JavaScriptObject*)o; 325 ExecState* exec = obj->rootObject->interpreter()->globalExec(); 366 RootObject* rootObject = obj->rootObject; 367 if (!rootObject || !rootObject->isValid()) 368 return; 369 370 ExecState* exec = rootObject->interpreter()->globalExec(); 326 371 JSLock lock; 327 372 throwError(exec, GeneralError, message);
Note:
See TracChangeset
for help on using the changeset viewer.