]> git.saurik.com Git - cycript.git/blobdiff - Execute.cpp
Make CYExecute take a CYUTF8String and fix the size shell game in Console's Run.
[cycript.git] / Execute.cpp
index 8ac1b14657925697d8624e9c56de008a7d014a9c..e8ea4ae006674d8f348818c6805ee4431df3212c 100644 (file)
@@ -1199,7 +1199,7 @@ JSObjectRef CYGetGlobalObject(JSContextRef context) {
     return JSContextGetGlobalObject(context);
 }
 
-const char *CYExecute(apr_pool_t *pool, const char *code) {
+const char *CYExecute(apr_pool_t *pool, CYUTF8String code) {
     JSContextRef context(CYGetJSContext());
     JSValueRef exception(NULL), result;
 
@@ -1302,6 +1302,7 @@ void CYInitializeDynamic() {
     Type_privateData::Class_ = JSClassCreate(&definition);
 
     definition = kJSClassDefinitionEmpty;
+    definition.className = "Global";
     //definition.getProperty = &Global_getProperty;
     Global_ = JSClassCreate(&definition);
 
@@ -1422,20 +1423,22 @@ extern "C" void CYSetupContext(JSGlobalContextRef context) {
     JSObjectRef all(JSObjectMake(context, All_, NULL));
     CYSetProperty(context, cycript, CYJSString("all"), all);
 
-    JSObjectRef last(NULL), curr(global);
+    if (true) {
+        JSObjectRef last(NULL), curr(global);
 
-    goto next; for (JSValueRef next;;) {
-        if (JSValueIsNull(context, next))
-            break;
-        last = curr;
-        curr = CYCastJSObject(context, next);
-      next:
-        next = JSObjectGetPrototype(context, curr);
-    }
+        goto next; for (JSValueRef next;;) {
+            if (JSValueIsNull(context, next))
+                break;
+            last = curr;
+            curr = CYCastJSObject(context, next);
+          next:
+            next = JSObjectGetPrototype(context, curr);
+        }
 
-    JSObjectSetPrototype(context, last, all);
+        JSObjectSetPrototype(context, last, all);
+    }
 
-    CYSetProperty(context, global, CYJSString("$cyq"), &$cyq);
+    CYSetProperty(context, global, CYJSString("$cyq"), &$cyq, kJSPropertyAttributeDontEnum);
 
     JSObjectRef System(JSObjectMake(context, NULL, NULL));
     CYSetProperty(context, cy, CYJSString("System"), System);