Hello, There have been API changes in libmozjs, which make the build fail if I enable ECMAScript support.
Attached is a patch that fixes the build failure. Anyways, elinks immediately seg faults after invocation. So I had to disable ECMAScript support. -- أحمد المحمودي (Ahmed El-Mahmoudy) Digital design engineer GPG KeyID: 0xEDDDA1B7 GPG Fingerprint: 8206 A196 2084 7E6D 0DF8 B176 BC19 6A94 EDDD A1B7
Description: Adapt for mozjs API changes Author: أحمد المحمودي (Ahmed El-Mahmoudy) <aelmahmo...@sabily.org> --- a/src/scripting/smjs/bookmarks.c +++ b/src/scripting/smjs/bookmarks.c @@ -113,22 +113,22 @@ unsigned char *str; /* jsstring_to_utf8() might GC; protect the string to come. */ - if (!JS_AddNamedRoot(ctx, &jsstr, "jsval_to_bookmark_string")) + if (!JS_AddNamedStringRoot(ctx, &jsstr, "jsval_to_bookmark_string")) return JS_FALSE; jsstr = JS_ValueToString(ctx, val); if (jsstr == NULL) { - JS_RemoveRoot(ctx, &jsstr); + JS_RemoveStringRoot(ctx, &jsstr); return JS_FALSE; } str = jsstring_to_utf8(ctx, jsstr, NULL); if (str == NULL) { - JS_RemoveRoot(ctx, &jsstr); + JS_RemoveStringRoot(ctx, &jsstr); return JS_FALSE; } - JS_RemoveRoot(ctx, &jsstr); + JS_RemoveStringRoot(ctx, &jsstr); mem_free_set(result, str); return JS_TRUE; } --- a/src/scripting/smjs/load_uri.c +++ b/src/scripting/smjs/load_uri.c @@ -56,7 +56,7 @@ end: if (download->cached) object_unlock(download->cached); - JS_RemoveRoot(smjs_ctx, &hop->callback); + JS_RemoveValueRoot(smjs_ctx, &hop->callback); mem_free(download->data); mem_free(download); @@ -76,7 +76,7 @@ if (argc < 2) return JS_FALSE; jsstr = JS_ValueToString(smjs_ctx, argv[0]); - uri_string = JS_GetStringBytes(jsstr); + uri_string = JS_EncodeString(smjs_ctx, jsstr); uri = get_uri(uri_string, 0); if (!uri) return JS_FALSE; @@ -96,7 +96,7 @@ hop->callback = argv[1]; hop->ses = smjs_ses; - if (!JS_AddNamedRoot(smjs_ctx, &hop->callback, + if (!JS_AddNamedValueRoot(smjs_ctx, &hop->callback, "smjs_load_uri_hop.callback")) { mem_free(hop); mem_free(download); --- a/src/scripting/smjs/action_object.c +++ b/src/scripting/smjs/action_object.c @@ -131,7 +131,7 @@ *vp = JSVAL_NULL; - action_str = JS_GetStringBytes(JS_ValueToString(ctx, id)); + action_str = JS_EncodeString(ctx, JS_ValueToString(ctx, id)); if (!action_str) return JS_TRUE; action_fn = smjs_get_action_fn_object(action_str); --- a/src/scripting/smjs/globhist.c +++ b/src/scripting/smjs/globhist.c @@ -139,7 +139,7 @@ switch (JSVAL_TO_INT(id)) { case GLOBHIST_TITLE: { JSString *jsstr = JS_ValueToString(smjs_ctx, *vp); - unsigned char *str = JS_GetStringBytes(jsstr); + unsigned char *str = JS_EncodeString(smjs_ctx, jsstr); mem_free_set(&history_item->title, stracpy(str)); @@ -147,7 +147,7 @@ } case GLOBHIST_URL: { JSString *jsstr = JS_ValueToString(smjs_ctx, *vp); - unsigned char *str = JS_GetStringBytes(jsstr); + unsigned char *str = JS_EncodeString(smjs_ctx, jsstr); mem_free_set(&history_item->url, stracpy(str)); @@ -207,7 +207,7 @@ unsigned char *uri_string; struct global_history_item *history_item; - uri_string = JS_GetStringBytes(JS_ValueToString(ctx, id)); + uri_string = JS_EncodeString(ctx, JS_ValueToString(ctx, id)); if (!uri_string) goto ret_null; history_item = get_global_history_item(uri_string); --- a/src/scripting/smjs/keybinding.c +++ b/src/scripting/smjs/keybinding.c @@ -32,7 +32,7 @@ data = JS_GetInstancePrivate(ctx, obj, (JSClass *) &keymap_class, NULL); - keystroke_str = JS_GetStringBytes(JS_ValueToString(ctx, id)); + keystroke_str = JS_EncodeString(ctx, JS_ValueToString(ctx, id)); if (!keystroke_str) goto ret_null; action_str = get_action_name_from_keystroke((enum keymap_id) *data, @@ -90,13 +90,13 @@ keymap_str = get_keymap_name((enum keymap_id) *data); if (!keymap_str) return JS_FALSE; - keystroke_str = JS_GetStringBytes(JS_ValueToString(ctx, id)); + keystroke_str = JS_EncodeString(ctx, JS_ValueToString(ctx, id)); if (!keystroke_str) return JS_FALSE; if (JSVAL_IS_STRING(*vp)) { unsigned char *action_str; - action_str = JS_GetStringBytes(JS_ValueToString(ctx, *vp)); + action_str = JS_EncodeString(ctx, JS_ValueToString(ctx, *vp)); if (!action_str) return JS_FALSE; if (bind_do(keymap_str, keystroke_str, action_str, 0)) --- a/src/scripting/smjs/cache_object.c +++ b/src/scripting/smjs/cache_object.c @@ -150,7 +150,7 @@ else switch (JSVAL_TO_INT(id)) { case CACHE_ENTRY_CONTENT: { JSString *jsstr = JS_ValueToString(smjs_ctx, *vp); - unsigned char *str = JS_GetStringBytes(jsstr); + unsigned char *str = JS_EncodeString(smjs_ctx, jsstr); size_t len = JS_GetStringLength(jsstr); add_fragment(cached, 0, str, len); @@ -161,7 +161,7 @@ } case CACHE_ENTRY_TYPE: { JSString *jsstr = JS_ValueToString(smjs_ctx, *vp); - unsigned char *str = JS_GetStringBytes(jsstr); + unsigned char *str = JS_EncodeString(smjs_ctx, jsstr); mem_free_set(&cached->content_type, stracpy(str)); @@ -170,7 +170,7 @@ } case CACHE_ENTRY_HEAD: { JSString *jsstr = JS_ValueToString(smjs_ctx, *vp); - unsigned char *str = JS_GetStringBytes(jsstr); + unsigned char *str = JS_EncodeString(smjs_ctx, jsstr); mem_free_set(&cached->head, stracpy(str)); --- a/src/scripting/smjs/core.c +++ b/src/scripting/smjs/core.c @@ -98,7 +98,7 @@ jsval *argv, jsval *rval) { JSString *jsstr = JS_ValueToString(smjs_ctx, *argv); - unsigned char *path = JS_GetStringBytes(jsstr); + unsigned char *path = JS_EncodeString(smjs_ctx, jsstr); if (smjs_do_file(path)) return JS_TRUE; @@ -308,7 +308,7 @@ struct string utf8; utf16_len = JS_GetStringLength(jsstr); - utf16 = JS_GetStringChars(jsstr); /* stays owned by jsstr */ + utf16 = JS_GetStringCharsZ(ctx, jsstr); /* stays owned by jsstr */ if (utf16 == NULL) { /* JS_GetStringChars doesn't have a JSContext * * parameter so it can't report the error --- a/src/scripting/smjs/elinks_object.c +++ b/src/scripting/smjs/elinks_object.c @@ -61,7 +61,7 @@ jsstr = JS_ValueToString(smjs_ctx, *vp); if (!jsstr) return JS_FALSE; - url = JS_GetStringBytes(jsstr); + url = JS_EncodeString(smjs_ctx, jsstr); if (!url) return JS_FALSE; goto_url(smjs_ses, url); --- a/src/scripting/smjs/hooks.c +++ b/src/scripting/smjs/hooks.c @@ -41,7 +41,7 @@ ret = EVENT_HOOK_STATUS_LAST; } else { JSString *jsstr = JS_ValueToString(smjs_ctx, rval); - unsigned char *str = JS_GetStringBytes(jsstr); + unsigned char *str = JS_EncodeString(smjs_ctx, jsstr); mem_free_set(url, stracpy(str)); } --- a/src/ecmascript/spidermonkey-shared.h +++ b/src/ecmascript/spidermonkey-shared.h @@ -68,7 +68,7 @@ return ""; } - return empty_string_or_(JS_GetStringBytes(JS_ValueToString(ctx, val))); + return empty_string_or_(JS_EncodeString(ctx, JS_ValueToString(ctx, val))); } #endif --- a/src/ecmascript/spidermonkey/form.c +++ b/src/ecmascript/spidermonkey/form.c @@ -942,7 +942,7 @@ static JSBool form_get_property(JSContext *ctx, JSObject *obj, jsval id, jsval *vp) { - /* DBG("doc %p %s\n", parent_doc, JS_GetStringBytes(JS_ValueToString(ctx, OBJECT_TO_JSVAL(parent_doc)))); */ + /* DBG("doc %p %s\n", parent_doc, JS_EncodeString(ctx, JS_ValueToString(ctx, OBJECT_TO_JSVAL(parent_doc)))); */ JSObject *parent_doc; /* instance of @document_class */ JSObject *parent_win; /* instance of @window_class */ struct view_state *vs; @@ -1525,7 +1525,7 @@ if (JS_ConvertValue(ctx, *vp, JSTYPE_STRING, vp) == JS_FALSE) return UCS_NO_CHAR; len = JS_GetStringLength(JSVAL_TO_STRING(*vp)); - chr = JS_GetStringChars(JSVAL_TO_STRING(*vp)); + chr = JS_GetStringCharsZ(ctx, JSVAL_TO_STRING(*vp)); /* This implementation ignores extra characters in the string. */ if (len < 1)
signature.asc
Description: Digital signature
_______________________________________________ elinks-dev mailing list elinks-dev@linuxfromscratch.org http://linuxfromscratch.org/mailman/listinfo/elinks-dev