]> git.saurik.com Git - cycript.git/commitdiff
Fixed the exception throwing mechanism to throw real JavaScript Error objects.
authorJay Freeman (saurik) <saurik@saurik.com>
Mon, 2 Nov 2009 01:30:41 +0000 (01:30 +0000)
committerJay Freeman (saurik) <saurik@saurik.com>
Mon, 2 Nov 2009 01:30:41 +0000 (01:30 +0000)
Library.cpp
ObjectiveC/Library.mm

index 0f911282e64dd7fbca816fb6b617797dd91406bb..383008a80328a899ffc4501b86a9e51790018672 100644 (file)
@@ -1448,8 +1448,18 @@ CYPoolError::CYPoolError(const char *format, va_list args) {
     message_ = apr_pvsprintf(pool_, format, args);
 }
 
     message_ = apr_pvsprintf(pool_, format, args);
 }
 
+JSValueRef CYCastJSError(JSContextRef context, const char *message) {
+    JSValueRef arguments[1] = {CYCastJSValue(context, message)};
+
+    JSValueRef exception(NULL);
+    JSValueRef value(JSObjectCallAsConstructor(context, Error_, 1, arguments, &exception));
+    CYThrow(context, exception);
+
+    return value;
+}
+
 JSValueRef CYPoolError::CastJSValue(JSContextRef context) const {
 JSValueRef CYPoolError::CastJSValue(JSContextRef context) const {
-    return CYCastJSValue(context, message_);
+    return CYCastJSError(context, message_);
 }
 
 CYJSError::CYJSError(JSContextRef context, const char *format, ...) {
 }
 
 CYJSError::CYJSError(JSContextRef context, const char *format, ...) {
@@ -1463,11 +1473,7 @@ CYJSError::CYJSError(JSContextRef context, const char *format, ...) {
     const char *message(apr_pvsprintf(pool, format, args));
     va_end (args);
 
     const char *message(apr_pvsprintf(pool, format, args));
     va_end (args);
 
-    JSValueRef arguments[1] = {CYCastJSValue(context, CYJSString(message))};
-
-    JSValueRef exception(NULL);
-    value_ = JSObjectCallAsConstructor(context, Error_, 1, arguments, &exception);
-    CYThrow(context, exception);
+    value_ = CYCastJSError(context, message);
 }
 
 JSGlobalContextRef CYGetJSContext() {
 }
 
 JSGlobalContextRef CYGetJSContext() {
index 5059300e645ca44c266a631d14fdc9c33d195a49..1de5595effa1035119350fd40fe9f9d764a77654 100644 (file)
@@ -1731,6 +1731,7 @@ static JSValueRef Internal_getProperty(JSContextRef context, JSObjectRef object,
 
     if (objc_ivar *ivar = object_getInstanceVariable(self, name, NULL)) {
         Type_privateData type(pool, ivar_getTypeEncoding(ivar));
 
     if (objc_ivar *ivar = object_getInstanceVariable(self, name, NULL)) {
         Type_privateData type(pool, ivar_getTypeEncoding(ivar));
+        // XXX: if this fails and throws an exception the person we are throwing it to gets the wrong exception
         return CYFromFFI(context, type.type_, type.GetFFI(), reinterpret_cast<uint8_t *>(self) + ivar_getOffset(ivar));
     }
 
         return CYFromFFI(context, type.type_, type.GetFFI(), reinterpret_cast<uint8_t *>(self) + ivar_getOffset(ivar));
     }