| Index: src/FileSystemJsObject.cpp | 
| diff --git a/src/FileSystemJsObject.cpp b/src/FileSystemJsObject.cpp | 
| index fffa32f1e74c61a21992bd60c60dc91952d1c76a..8b8be6e432488c94d4734bf7cd4e2a4b7cc7c513 100644 | 
| --- a/src/FileSystemJsObject.cpp | 
| +++ b/src/FileSystemJsObject.cpp | 
| @@ -34,13 +34,15 @@ namespace | 
| { | 
| public: | 
| IoThread(JsEnginePtr jsEngine, JsValuePtr callback) | 
| -      : Thread(true), jsEngine(jsEngine), fileSystem(jsEngine->GetFileSystem()), | 
| -        callback(callback) | 
| +      : Thread(true) | 
| +      , m_jsEngine(jsEngine) | 
| +      , fileSystem(jsEngine->GetFileSystem()) | 
| +      , callback(callback) | 
| { | 
| } | 
|  | 
| protected: | 
| -    JsEnginePtr jsEngine; | 
| +    std::weak_ptr<JsEngine> m_jsEngine; | 
| FileSystemPtr fileSystem; | 
| JsValuePtr callback; | 
| }; | 
| @@ -72,8 +74,8 @@ namespace | 
| error =  "Unknown error while reading from " + path; | 
| } | 
|  | 
| -      const JsContext context(jsEngine); | 
| -      JsValuePtr result = jsEngine->NewObject(); | 
| +      JsContext context(m_jsEngine); | 
| +      JsValuePtr result = context.GetJsEngine().NewObject(); | 
| result->SetProperty("content", content); | 
| result->SetProperty("error", error); | 
| JsValueList params; | 
| @@ -112,8 +114,8 @@ namespace | 
| error = "Unknown error while writing to " + path; | 
| } | 
|  | 
| -      const JsContext context(jsEngine); | 
| -      JsValuePtr errorValue = jsEngine->NewValue(error); | 
| +      JsContext context(m_jsEngine); | 
| +      JsValuePtr errorValue = context.GetJsEngine().NewValue(error); | 
| JsValueList params; | 
| params.push_back(errorValue); | 
| callback->Call(params); | 
| @@ -149,8 +151,8 @@ namespace | 
| error = "Unknown error while moving " + fromPath + " to " + toPath; | 
| } | 
|  | 
| -      const JsContext context(jsEngine); | 
| -      JsValuePtr errorValue = jsEngine->NewValue(error); | 
| +      JsContext context(m_jsEngine); | 
| +      JsValuePtr errorValue = context.GetJsEngine().NewValue(error); | 
| JsValueList params; | 
| params.push_back(errorValue); | 
| callback->Call(params); | 
| @@ -186,8 +188,8 @@ namespace | 
| error = "Unknown error while removing " + path; | 
| } | 
|  | 
| -      const JsContext context(jsEngine); | 
| -      JsValuePtr errorValue = jsEngine->NewValue(error); | 
| +      JsContext context(m_jsEngine); | 
| +      JsValuePtr errorValue = context.GetJsEngine().NewValue(error); | 
| JsValueList params; | 
| params.push_back(errorValue); | 
| callback->Call(params); | 
| @@ -224,8 +226,8 @@ namespace | 
| error = "Unknown error while calling stat on " + path; | 
| } | 
|  | 
| -      const JsContext context(jsEngine); | 
| -      JsValuePtr result = jsEngine->NewObject(); | 
| +      JsContext context(m_jsEngine); | 
| +      JsValuePtr result = context.GetJsEngine().NewObject(); | 
| result->SetProperty("exists", statResult.exists); | 
| result->SetProperty("isFile", statResult.isFile); | 
| result->SetProperty("isDirectory", statResult.isDirectory); | 
|  |