From 823b6885371663a2255f8da4b9cc10dad18eebf2 Mon Sep 17 00:00:00 2001 From: Bryan Roe Date: Mon, 28 Oct 2019 11:31:16 -0700 Subject: [PATCH] Added gaurd, to abort dispatch if the HECI object was GC'ed. --- microscript/ILibDuktape_HECI.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/microscript/ILibDuktape_HECI.c b/microscript/ILibDuktape_HECI.c index 39741dd..fd5f15c 100644 --- a/microscript/ILibDuktape_HECI.c +++ b/microscript/ILibDuktape_HECI.c @@ -768,6 +768,8 @@ void ILibDuktape_HECI_IoctlHandler_Dispatch(void *chain, void *user) int i; duk_context *ctx = data->ctx; + if (!ILibMemory_CanaryOK(data)) { return; } // Abort Dispatch, becuase the HECI object was GC'ed. + duk_push_heapptr(data->ctx, data->data); // [array] duk_push_heapptr(data->ctx, data->heciObject); // [array][heci] duk_get_prop_index(data->ctx, -2, 2); // [array][heci][callback] @@ -940,7 +942,7 @@ duk_ret_t ILibDuktape_HECI_doIoctl(duk_context *ctx) { duk_dup(ctx, i); // [heci][stash][array][object] duk_put_prop_index(ctx, -2, i-1); // [heci][stash][array] - } + } duk_put_prop_string(ctx, -2, Duktape_GetStashKey(duk_get_heapptr(ctx, -1))); // [heci][stash]