]> git.saurik.com Git - cycript.git/commitdiff
Fixed number output formatting (to avoid accidental rounding) and removed length...
authorJay Freeman (saurik) <saurik@saurik.com>
Thu, 15 Oct 2009 02:27:01 +0000 (02:27 +0000)
committerJay Freeman (saurik) <saurik@saurik.com>
Thu, 15 Oct 2009 02:27:01 +0000 (02:27 +0000)
Library.mm
Output.cpp

index 252f9a40b84093cbef107e494e9f5d43b3bd3350..a0ab2adab22d1d8255c5c9ea37df06e328467b10 100644 (file)
@@ -1304,6 +1304,7 @@ const char *CYPoolCYONString(apr_pool_t *pool, JSContextRef context, JSValueRef
     } else return NULL;
 }
 
+// XXX: use objc_getAssociatedObject and objc_setAssociatedObject on 10.6
 struct CYInternal :
     CYData
 {
@@ -1445,31 +1446,20 @@ JSObjectRef CYMakeFunctor(JSContextRef context, void (*function)(), const char *
     return JSObjectMake(context, Functor_, data);
 }
 
-const char *CYPoolCString(apr_pool_t *pool, JSStringRef value, size_t *length = NULL) {
+const char *CYPoolCString(apr_pool_t *pool, JSStringRef value) {
     if (pool == NULL) {
         const char *string([CYCastNSString(NULL, value) UTF8String]);
-        if (length != NULL)
-            *length = strlen(string);
         return string;
     } else {
         size_t size(JSStringGetMaximumUTF8CStringSize(value));
         char *string(new(pool) char[size]);
         JSStringGetUTF8CString(value, string, size);
-        // XXX: this is ironic
-        if (length != NULL)
-            *length = strlen(string);
         return string;
     }
 }
 
-const char *CYPoolCString(apr_pool_t *pool, JSContextRef context, JSValueRef value, size_t *length = NULL) {
-    if (!JSValueIsNull(context, value))
-        return CYPoolCString(pool, CYJSString(context, value), length);
-    else {
-        if (length != NULL)
-            *length = 0;
-        return NULL;
-    }
+const char *CYPoolCString(apr_pool_t *pool, JSContextRef context, JSValueRef value) {
+    return JSValueIsNull(context, value) ? NULL : CYPoolCString(pool, CYJSString(context, value));
 }
 
 bool CYGetIndex(apr_pool_t *pool, JSStringRef value, ssize_t &index) {
@@ -1683,8 +1673,8 @@ bool Index_(apr_pool_t *pool, Struct_privateData *internal, JSStringRef property
     if (type == NULL)
         return false;
 
-    size_t length;
-    const char *name(CYPoolCString(pool, property, &length));
+    const char *name(CYPoolCString(pool, property));
+    size_t length(strlen(name));
     double number(CYCastDouble(name, length));
 
     size_t count(type->data.signature.count);
index 3396b483207c555a34fccf778fdee0d364ad0786..b2cfee5991c9246895973c88136fb427be44590c 100644 (file)
@@ -398,8 +398,8 @@ void CYNull::Output(std::ostream &out, CYFlags flags) const {
 void CYNumber::Output(std::ostream &out, CYFlags flags) const {
     if ((flags & CYNoLeader) != 0)
         out << ' ';
-    // XXX: this is not a useful formatting
-    out << Value();
+    // XXX: decide on correct precision
+    out << std::setprecision(9) << Value();
     if ((flags & CYNoTrailer) != 0)
         out << ' ';
 }