Changeset 15224 in webkit for trunk/JavaScriptCore/API/JSObjectRef.cpp
- Timestamp:
- Jul 7, 2006, 7:02:47 PM (19 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/API/JSObjectRef.cpp
r15168 r15224 71 71 } 72 72 73 JSObjectRef JSFunctionMakeWithBody(JSContextRef context, JSStringBufferRef body, JSStringBufferRef sourceURL, int startingLineNumber )73 JSObjectRef JSFunctionMakeWithBody(JSContextRef context, JSStringBufferRef body, JSStringBufferRef sourceURL, int startingLineNumber, JSValueRef* exception) 74 74 { 75 75 JSLock lock; … … 77 77 ExecState* exec = toJS(context); 78 78 UString::Rep* bodyRep = toJS(body); 79 UString::Rep* sourceURLRep = toJS(sourceURL); 79 UString jsSourceURL = UString(toJS(sourceURL)); 80 80 81 if (!bodyRep) 81 82 bodyRep = &UString::Rep::null; 82 RefPtr<FunctionBodyNode> bodyNode = Parser::parse(UString(sourceURLRep), startingLineNumber, bodyRep->data(), bodyRep->size(), NULL, NULL, NULL); 83 if (!bodyNode) 83 84 int sid; 85 int errLine; 86 UString errMsg; 87 RefPtr<FunctionBodyNode> bodyNode = Parser::parse(jsSourceURL, startingLineNumber, bodyRep->data(), bodyRep->size(), &sid, &errLine, &errMsg); 88 if (!bodyNode) { 89 if (exception) 90 *exception = Error::create(exec, SyntaxError, errMsg, errLine, sid, jsSourceURL); 84 91 return NULL; 92 } 85 93 86 94 ScopeChain scopeChain; … … 127 135 UString::Rep* nameRep = toJS(propertyName); 128 136 129 *value = toRef(jsObject->get(exec, Identifier(nameRep))); 130 return !JSValueIsUndefined(*value); 137 JSValue* jsValue = jsObject->get(exec, Identifier(nameRep)); 138 if (value) 139 *value = toRef(jsValue); 140 return !jsValue->isUndefined(); 131 141 } 132 142 … … 161 171 JSObject* jsObject = toJS(object); 162 172 163 if (!jsObject->inherits(&JSCallbackObject::info)) 164 return 0; 165 166 return static_cast<JSCallbackObject*>(jsObject)->getPrivate(); 173 if (jsObject->inherits(&JSCallbackObject::info)) 174 return static_cast<JSCallbackObject*>(jsObject)->getPrivate(); 175 176 if (jsObject->inherits(&JSCallbackFunction::info)) 177 return static_cast<JSCallbackFunction*>(jsObject)->getPrivate(); 178 179 if (jsObject->inherits(&JSCallbackConstructor::info)) 180 return static_cast<JSCallbackConstructor*>(jsObject)->getPrivate(); 181 182 return 0; 167 183 } 168 184 … … 171 187 JSObject* jsObject = toJS(object); 172 188 173 if (!jsObject->inherits(&JSCallbackObject::info)) 174 return false; 175 176 static_cast<JSCallbackObject*>(jsObject)->setPrivate(data); 177 return true; 189 if (jsObject->inherits(&JSCallbackObject::info)) { 190 static_cast<JSCallbackObject*>(jsObject)->setPrivate(data); 191 return true; 192 } 193 194 if (jsObject->inherits(&JSCallbackFunction::info)) { 195 static_cast<JSCallbackFunction*>(jsObject)->setPrivate(data); 196 return true; 197 } 198 199 if (jsObject->inherits(&JSCallbackConstructor::info)) { 200 static_cast<JSCallbackConstructor*>(jsObject)->setPrivate(data); 201 return true; 202 } 203 204 return false; 178 205 } 179 206 … … 194 221 for (size_t i = 0; i < argc; i++) 195 222 argList.append(toJS(argv[i])); 196 197 JSValueRef result = toRef(jsObject->call(exec, jsThisObject, argList)); 223 224 JSValueRef result = toRef(jsObject->call(exec, jsThisObject, argList)); // returns NULL if object->implementsCall() is false 198 225 if (exec->hadException()) { 199 226 if (exception) … … 221 248 argList.append(toJS(argv[i])); 222 249 223 JSObjectRef result = toRef(jsObject->construct(exec, argList)); 250 JSObjectRef result = toRef(jsObject->construct(exec, argList)); // returns NULL if object->implementsCall() is false 224 251 if (exec->hadException()) { 225 252 if (exception) … … 260 287 ReferenceListIterator& iterator = enumerator->iterator; 261 288 if (iterator != enumerator->list.end()) { 289 JSStringBufferRef result = toRef(iterator->getPropertyName(exec).ustring().rep()); 262 290 iterator++; 263 return toRef(iterator->getPropertyName(exec).ustring().rep());291 return result; 264 292 } 265 293 return 0;
Note:
See TracChangeset
for help on using the changeset viewer.