diff --git a/src/rtPromise.h b/src/rtPromise.h index dc08c72e6d..b43ca55e4d 100644 --- a/src/rtPromise.h +++ b/src/rtPromise.h @@ -53,7 +53,7 @@ class rtPromise: public rtObject rtMethod1ArgAndNoReturn("reject",reject,rtValue); rtProperty(promiseId, getPromiseId, setPromiseId, rtString); - rtPromise() : /*promise_id(promiseID++),*/ promise_name(""), mState(PENDING), mObject(NULL) + rtPromise() : /*promise_id(promiseID++),*/ promise_name(""), mState(PENDING), mObject(NULL), mRcvdRejectBeforeThen(false) { // rtLogDebug("############# PROMISE >> CREATED [ id: %d ] \n", promise_id); } @@ -100,6 +100,10 @@ class rtPromise: public rtObject { if (reject) { + if (mRcvdRejectBeforeThen == true && (NULL != mObject)) { + mObject = new rtObject; + mRcvdRejectBeforeThen = false; + } reject.send(mObject); newPromise = new rtPromise; newPromise.send("reject",mObject); @@ -162,6 +166,9 @@ class rtPromise: public rtObject { mObject = objRef.getPtr(); } + if (mThenData.size() == 0) { + mRcvdRejectBeforeThen = true; + } if (mObject != NULL) { for (std::vector::iterator it = mThenData.begin(); @@ -175,7 +182,6 @@ class rtPromise: public rtObject } } mThenData.clear(); - mObject = objRef.getPtr(); return RT_OK; } @@ -209,6 +215,7 @@ class rtPromise: public rtObject rtPromiseState mState; std::vector mThenData; rtIObject* mObject; + bool mRcvdRejectBeforeThen; }; // uint32_t rtPromise::promiseID = 0; diff --git a/src/rtScriptV8/rtScriptNode.cpp b/src/rtScriptV8/rtScriptNode.cpp index 1019592c9b..6ee4f05731 100644 --- a/src/rtScriptV8/rtScriptNode.cpp +++ b/src/rtScriptV8/rtScriptNode.cpp @@ -457,7 +457,11 @@ void rtNodeContext::createEnvironment() #ifdef USE_NODE_PLATFORM rtString currentPath; rtGetCurrentDirectory(currentPath); + #ifdef WIN32 node::InspectorStart(mEnv, currentPath.cString(), platform); + #else + node::InspectorStart(mEnv, currentPath.cString(), "", 0); + #endif #endif //USE_NODE_PLATFORM #endif #endif