diff --git a/microscript/ILibDuktape_Helpers.c b/microscript/ILibDuktape_Helpers.c index ad64b78..66229b4 100644 --- a/microscript/ILibDuktape_Helpers.c +++ b/microscript/ILibDuktape_Helpers.c @@ -679,7 +679,7 @@ void* ILibDuktape_Timeout(duk_context *ctx, void **args, int argsLen, int delay, duk_push_pointer(ctx, callback); // [setTimeout][this][func][delay][userFunc] duk_push_array(ctx); // [setTimeout][this][func][delay][userFunc][array] - while (args[i] != NULL && i < argsLen) + while (i < argsLen && args[i] != NULL) { duk_get_prop_string(ctx, -1, "push"); // [setInterval][this][func][delay][userFunc][array][push] duk_dup(ctx, -2); // [setInterval][this][func][delay][userFunc][array][push][this] diff --git a/microscript/ILibDuktape_Polyfills.c b/microscript/ILibDuktape_Polyfills.c index 8855c28..5a9108a 100644 --- a/microscript/ILibDuktape_Polyfills.c +++ b/microscript/ILibDuktape_Polyfills.c @@ -279,7 +279,7 @@ duk_ret_t ILibDuktape_Polyfills_Buffer_toString(duk_context *ctx) { int nargs = duk_get_top(ctx); char *buffer, *tmpBuffer; - duk_size_t bufferLen; + duk_size_t bufferLen = 0; char *cType; duk_push_this(ctx); // [buffer] @@ -287,8 +287,15 @@ duk_ret_t ILibDuktape_Polyfills_Buffer_toString(duk_context *ctx) if (nargs == 0) { - // Just convert to a string - duk_push_lstring(ctx, buffer, strnlen_s(buffer, bufferLen)); // [buffer][string] + if (bufferLen == 0 || buffer == NULL) + { + duk_push_null(ctx); + } + else + { + // Just convert to a string + duk_push_lstring(ctx, buffer, strnlen_s(buffer, bufferLen)); // [buffer][string] + } } else {