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)

Attachment: signature.asc
Description: Digital signature

_______________________________________________
elinks-dev mailing list
elinks-dev@linuxfromscratch.org
http://linuxfromscratch.org/mailman/listinfo/elinks-dev

Reply via email to