This commit also exposed qjs_free_prop_enum() as public.
for (n = 0; n < length; n++) {
key.start = (u_char *) JS_AtomToCString(ctx, ptab[n].atom);
- JS_FreeAtom(ctx, ptab[n].atom);
if (njs_slow_path(key.start == NULL)) {
goto fail;
}
JS_FreeCString(ctx, (const char *) key.start);
}
- js_free_rt(JS_GetRuntime(ctx), ptab);
+ qjs_free_prop_enum(ctx, ptab, length);
prototype = JS_GetPrototype(ctx, object);
if (JS_IsException(prototype)) {
}
if (ptab != NULL) {
- js_free_rt(JS_GetRuntime(ctx), ptab);
+ qjs_free_prop_enum(ctx, ptab, length);
}
JS_FreeValue(ctx, object);
}
-static void
-qjs_free_prop_enum(JSContext *cx, JSPropertyEnum *tab, uint32_t len)
-{
- uint32_t i;
-
- for (i = 0; i < len; i++) {
- JS_FreeAtom(cx, tab[i].atom);
- }
-
- js_free(cx, tab);
-}
-
-
static JSValue
qjs_query_string_stringify_internal(JSContext *cx, JSValue obj, njs_str_t *sep,
njs_str_t *eq, JSValue encoder)
}
+void
+qjs_free_prop_enum(JSContext *ctx, JSPropertyEnum *tab, uint32_t len)
+{
+ uint32_t i;
+
+ for(i = 0; i < len; i++) {
+ JS_FreeAtom(ctx, tab[i].atom);
+ }
+
+ js_free(ctx, tab);
+}
+
+
JSValue
qjs_string_hex(JSContext *cx, const njs_str_t *src)
{
JS_NewStringLen(ctx, (const char *) (data), len)
JSValue qjs_string_create_chb(JSContext *cx, njs_chb_t *chain);
+void qjs_free_prop_enum(JSContext *ctx, JSPropertyEnum *tab, uint32_t len);
+
JSValue qjs_string_hex(JSContext *cx, const njs_str_t *src);
JSValue qjs_string_base64(JSContext *cx, const njs_str_t *src);
JSValue qjs_string_base64url(JSContext *cx, const njs_str_t *src);