]> git.saurik.com Git - cycript.git/commitdiff
Recursive CommonJS modules didn't actually work.
authorJay Freeman (saurik) <saurik@saurik.com>
Sun, 26 Jan 2014 21:51:51 +0000 (13:51 -0800)
committerJay Freeman (saurik) <saurik@saurik.com>
Sun, 26 Jan 2014 21:51:51 +0000 (13:51 -0800)
Execute.cpp

index 2bdd59f395882f1e3ee1dbff1da6a749d812292f..1644bb1d5ae2bfb42873669b8d5a315462601e8f 100644 (file)
@@ -1725,6 +1725,12 @@ static JSValueRef require(JSContextRef context, JSObjectRef object, JSObjectRef
     if (!JSValueIsUndefined(context, cache))
         module = CYCastJSObject(context, cache);
     else {
     if (!JSValueIsUndefined(context, cache))
         module = CYCastJSObject(context, cache);
     else {
+        module = JSObjectMake(context, NULL, NULL);
+        CYSetProperty(context, modules, key, module);
+
+        JSObjectRef exports(JSObjectMake(context, NULL, NULL));
+        CYSetProperty(context, module, property, exports);
+
         CYUTF8String code;
         code.data = reinterpret_cast<char *>(CYMapFile(path, &code.size));
 
         CYUTF8String code;
         code.data = reinterpret_cast<char *>(CYMapFile(path, &code.size));
 
@@ -1735,13 +1741,8 @@ static JSValueRef require(JSContextRef context, JSObjectRef object, JSObjectRef
         JSValueRef value(_jsccall(JSEvaluateScript, context, CYJSString(code), NULL, NULL, 0));
         JSObjectRef function(CYCastJSObject(context, value));
 
         JSValueRef value(_jsccall(JSEvaluateScript, context, CYJSString(code), NULL, NULL, 0));
         JSObjectRef function(CYCastJSObject(context, value));
 
-        module = JSObjectMake(context, NULL, NULL);
-        JSObjectRef exports(JSObjectMake(context, NULL, NULL));
-        CYSetProperty(context, module, property, exports);
-
         JSValueRef arguments[3] = { exports, JSObjectMakeFunctionWithCallback(context, CYJSString("require"), &require), module };
         CYCallAsFunction(context, function, NULL, 3, arguments);
         JSValueRef arguments[3] = { exports, JSObjectMakeFunctionWithCallback(context, CYJSString("require"), &require), module };
         CYCallAsFunction(context, function, NULL, 3, arguments);
-        CYSetProperty(context, modules, key, module);
     }
 
     return CYGetProperty(context, module, property);
     }
 
     return CYGetProperty(context, module, property);