]> git.saurik.com Git - cycript.git/commitdiff
Maintain a logical setup for const on sig::String.
authorJay Freeman (saurik) <saurik@saurik.com>
Sat, 9 Jan 2016 17:48:37 +0000 (09:48 -0800)
committerJay Freeman (saurik) <saurik@saurik.com>
Sat, 9 Jan 2016 17:48:37 +0000 (09:48 -0800)
Execute.cpp
sig/types.hpp

index 6ded65e32622673f0850d4dc97635326bbee321c..3f00a87e95abdaee802af48b707b3b4efa0a18cf 100644 (file)
@@ -1678,7 +1678,7 @@ static JSValueRef Type_callAsFunction_pointerTo(JSContextRef context, JSObjectRe
     Type_privateData *internal(reinterpret_cast<Type_privateData *>(JSObjectGetPrivate(_this)));
 
     if (dynamic_cast<sig::Primitive<char> *>(internal->type_) != NULL)
-        return CYMakeType(context, sig::String());
+        return CYMakeType(context, sig::String((internal->type_->flags & JOC_TYPE_CONST) != 0));
     else
         return CYMakeType(context, sig::Pointer(*internal->type_));
 } CYCatch(NULL) }
@@ -1860,7 +1860,7 @@ static JSValueRef CString_getProperty_length(JSContextRef context, JSObjectRef o
 } CYCatch(NULL) }
 
 static JSValueRef CString_getProperty_$cyt(JSContextRef context, JSObjectRef object, JSStringRef property, JSValueRef *exception) { CYTry {
-    return CYMakeType(context, sig::String());
+    return CYMakeType(context, sig::String(true));
 } CYCatch(NULL) }
 
 static JSValueRef CArray_getProperty_$cyt(JSContextRef context, JSObjectRef object, JSStringRef property, JSValueRef *exception) { CYTry {
@@ -2545,7 +2545,7 @@ extern "C" void CYSetupContext(JSGlobalContextRef context) {
     }
 #endif
 
-    CYSetProperty(context, String_prototype, cyt_s, CYMakeType(context, sig::String()), kJSPropertyAttributeDontEnum);
+    CYSetProperty(context, String_prototype, cyt_s, CYMakeType(context, sig::String(true)), kJSPropertyAttributeDontEnum);
 
     CYSetProperty(context, cache, CYJSString("dlerror"), CYMakeFunctor(context, "dlerror", "*"), kJSPropertyAttributeDontEnum);
     CYSetProperty(context, cache, CYJSString("RTLD_DEFAULT"), CYCastJSValue(context, reinterpret_cast<intptr_t>(RTLD_DEFAULT)), kJSPropertyAttributeDontEnum);
index e98147ca7778e11c3f2619e8661d84655340e605..30d8dbdd6106bfa1cfc3b6055124741830687417 100644 (file)
@@ -130,6 +130,14 @@ struct Unknown :
 struct String :
     Type
 {
+    String() {
+    }
+
+    String(bool constant) {
+        if (constant)
+            flags |= JOC_TYPE_CONST;
+    }
+
     String *Copy(CYPool &pool, const char *rename = NULL) const override;
 
     const char *Encode(CYPool &pool) const override;