diff --git a/CHANGELOG.md b/CHANGELOG.md index 74ba117..50422a6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,10 @@ * @LastEditTime: 2020-12-02 11:36:40 --> +## 0.2.6 + +* fix stack overflow in jsToCString. + ## 0.2.5 * remove dart object when jsfree. diff --git a/cxx/ffi.cpp b/cxx/ffi.cpp index 227a61b..6ed755c 100644 --- a/cxx/ffi.cpp +++ b/cxx/ffi.cpp @@ -251,7 +251,11 @@ extern "C" DLLEXPORT const char *jsToCString(JSContext *ctx, JSValueConst *val) { - return JS_ToCString(ctx, *val); + JSRuntime *rt = JS_GetRuntime(ctx); + uint8_t *stack_top = JS_SetStackTop(rt, 0); + const char *ret = JS_ToCString(ctx, *val); + JS_SetStackTop(rt, stack_top); + return ret; } DLLEXPORT void jsFreeCString(JSContext *ctx, const char *ptr) diff --git a/example/pubspec.lock b/example/pubspec.lock index d9ad585..d994e83 100644 --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -82,7 +82,7 @@ packages: path: ".." relative: true source: path - version: "0.2.5" + version: "0.2.6" flutter_test: dependency: "direct dev" description: flutter diff --git a/pubspec.yaml b/pubspec.yaml index 2f9390f..ea53c28 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: flutter_qjs description: This plugin is a simple js engine for flutter using the `quickjs` project. Plugin currently supports all the platforms except web! -version: 0.2.5 +version: 0.2.6 homepage: https://github.com/ekibun/flutter_qjs environment: