Skip to content

Commit 83bf0e4

Browse files
committed
quickjs: fix prototype memory leak
1 parent 03bd68b commit 83bf0e4

1 file changed

Lines changed: 7 additions & 9 deletions

File tree

test-app/runtime/src/main/cpp/napi/quickjs/quickjs-api.c

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2506,25 +2506,23 @@ napi_status napi_get_all_property_names(napi_env env,
25062506
JSValue proto = JS_DupValue(env->context, jsValue);
25072507

25082508
while (!JS_IsNull(proto)) {
2509-
25102509
JSPropertyEnum *tab = NULL;
25112510
uint32_t len = 0;
25122511

25132512
JS_GetOwnPropertyNames(env->context, &tab, &len, proto, get_filter);
2513+
25142514
for (uint32_t i = 0; i < len; i++) {
25152515
JSValue name = JS_AtomToValue(env->context, tab[i].atom);
2516-
25172516
JS_SetPropertyInt64(env->context, array, i, name);
2518-
JS_FreeAtom(env->context, tab[i].atom);
25192517
}
25202518

2521-
js_free(env->context, tab);
2519+
JS_FreePropertyEnum(env->context, tab, len);
2520+
2521+
// Free the prototype.
2522+
JS_FreeValue(env->context, proto);
25222523

25232524
if (key_mode == napi_key_include_prototypes) {
2524-
JSValue nextProto = JS_GetPrototype(env->context, proto);
2525-
// Free the prototype.
2526-
JS_FreeValue(env->context, proto);
2527-
proto = nextProto;
2525+
proto = JS_GetPrototype(env->context, proto);
25282526
} else {
25292527
proto = JS_NULL;
25302528
}
@@ -4231,7 +4229,7 @@ napi_status qjs_free_napi_env(napi_env env) {
42314229

42324230
// Free Context
42334231
JS_FreeContext(env->context);
4234-
4232+
42354233

42364234
return napi_clear_last_error(env);
42374235
}

0 commit comments

Comments
 (0)