[gjs/wip/xulrunner-1.9.3-rebase2: 6/8] xulrunner 1.9.3: Fix assumption that jsid == jsval



commit f826423e7d0b013be55183d8d22e71746b2192c8
Author: Colin Walters <walters verbum org>
Date:   Thu Sep 16 19:40:11 2010 -0400

    xulrunner 1.9.3: Fix assumption that jsid == jsval
    
    The two have always been conceptually distinct types.  Even in 1.9.3,
    they are still the same in implementation, but to avoid a pile of
    warnings, we should avoid confusing them. Unfortunately, even the
    SpiderMonkey docs are wrong in a few places, so gjs' code confusing
    them is understandable.
    
    Anyways, fix up places that made this assumption.

 gi/arg.c                |    6 +++---
 gi/boxed.c              |   30 +++++++++++++++---------------
 gi/function.c           |    4 ++--
 gi/ns.c                 |    4 ++--
 gi/object.c             |   28 ++++++++++++----------------
 gi/param.c              |    8 ++++----
 gi/repo.c               |    4 ++--
 gi/union.c              |    4 ++--
 gjs/byteArray.c         |   36 ++++++++++++++++++++++++------------
 gjs/compat.h            |   12 ++++++++++++
 gjs/importer.c          |   16 ++++++----------
 gjs/jsapi-util-string.c |   11 +++++++++--
 gjs/jsapi-util.c        |   14 +++++---------
 gjs/jsapi-util.h        |    3 ++-
 modules/dbus-exports.c  |   10 +++++-----
 modules/dbus-values.c   |    6 +++---
 modules/dbus.c          |    7 ++++---
 17 files changed, 112 insertions(+), 91 deletions(-)
---
diff --git a/gi/arg.c b/gi/arg.c
index 9035731..4241a80 100644
--- a/gi/arg.c
+++ b/gi/arg.c
@@ -299,7 +299,7 @@ gjs_object_to_g_hash(JSContext   *context,
     if (iter == NULL)
         return JS_FALSE;
 
-    prop_id = JSVAL_VOID;
+    prop_id = JSID_VOID;
     if (!JS_NextProperty(context, iter, &prop_id))
         return JS_FALSE;
 
@@ -308,7 +308,7 @@ gjs_object_to_g_hash(JSContext   *context,
      * Rely on the type-aware g_argument_release functions. */
    result = g_hash_table_new(g_str_hash, g_str_equal);
 
-    while (prop_id != JSVAL_VOID) {
+   while (!JSID_IS_VOID(prop_id)) {
         jsval key_js, val_js;
         GArgument key_arg, val_arg;
 
@@ -341,7 +341,7 @@ gjs_object_to_g_hash(JSContext   *context,
 
         g_hash_table_insert(result, key_arg.v_pointer, val_arg.v_pointer);
 
-        prop_id = JSVAL_VOID;
+        prop_id = JSID_VOID;
         if (!JS_NextProperty(context, iter, &prop_id))
             goto free_hash_and_fail;
     }
diff --git a/gi/boxed.c b/gi/boxed.c
index 4fb93c7..b85ec2a 100644
--- a/gi/boxed.c
+++ b/gi/boxed.c
@@ -84,7 +84,7 @@ GJS_DEFINE_DYNAMIC_PRIV_FROM_JS(Boxed, gjs_boxed_class)
 static JSBool
 boxed_new_resolve(JSContext *context,
                   JSObject  *obj,
-                  jsval      id,
+                  jsid       id,
                   uintN      flags,
                   JSObject **objp)
 {
@@ -93,7 +93,7 @@ boxed_new_resolve(JSContext *context,
 
     *objp = NULL;
 
-    if (!gjs_get_string_id(id, &name))
+    if (!gjs_get_string_id(context, id, &name))
         return JS_TRUE; /* not resolved, but no error */
 
     priv = priv_from_js(context, obj);
@@ -328,20 +328,16 @@ boxed_init_from_props(JSContext   *context,
 
     field_map = get_field_map(priv->info);
 
-    prop_id = JSVAL_VOID;
+    prop_id = JSID_VOID;
     if (!JS_NextProperty(context, iter, &prop_id))
         goto out;
 
-    while (prop_id != JSVAL_VOID) {
+    while (!JSID_IS_VOID(prop_id)) {
         GIFieldInfo *field_info;
-        jsval nameval;
         const char *name;
         jsval value;
 
-        if (!JS_IdToValue(context, prop_id, &nameval))
-            goto out;
-
-        if (!gjs_get_string_id(nameval, &name))
+        if (!gjs_get_string_id(context, prop_id, &name))
             goto out;
 
         field_info = g_hash_table_lookup(field_map, name);
@@ -358,7 +354,7 @@ boxed_init_from_props(JSContext   *context,
             goto out;
         }
 
-        prop_id = JSVAL_VOID;
+        prop_id = JSID_VOID;
         if (!JS_NextProperty(context, iter, &prop_id))
             goto out;
     }
@@ -592,17 +588,21 @@ boxed_finalize(JSContext *context,
 static GIFieldInfo *
 get_field_info (JSContext *context,
                 Boxed     *priv,
-                jsval      id)
+                jsid       id)
 {
     int field_index;
+    jsval id_val;
+
+    if (!JS_IdToValue(context, id, &id_val))
+        return JS_FALSE;
 
-    if (!JSVAL_IS_INT (id)) {
+    if (!JSVAL_IS_INT (id_val)) {
         gjs_throw(context, "Field index for %s is not an integer",
                   g_base_info_get_name ((GIBaseInfo *)priv->info));
         return NULL;
     }
 
-    field_index = JSVAL_TO_INT(id);
+    field_index = JSVAL_TO_INT(id_val);
     if (field_index < 0 || field_index >= g_struct_info_get_n_fields (priv->info)) {
         gjs_throw(context, "Bad field index %d for %s", field_index,
                   g_base_info_get_name ((GIBaseInfo *)priv->info));
@@ -661,7 +661,7 @@ get_nested_interface_object (JSContext   *context,
 static JSBool
 boxed_field_getter (JSContext *context,
                     JSObject  *obj,
-                    jsval      id,
+                    jsid       id,
                     jsval     *value)
 {
     Boxed *priv;
@@ -840,7 +840,7 @@ out:
 static JSBool
 boxed_field_setter (JSContext *context,
                     JSObject  *obj,
-                    jsval      id,
+                    jsid       id,
                     jsval     *value)
 {
     Boxed *priv;
diff --git a/gi/function.c b/gi/function.c
index 2b908e3..1132484 100644
--- a/gi/function.c
+++ b/gi/function.c
@@ -103,7 +103,7 @@ GJS_DEFINE_PRIV_FROM_JS(Function, gjs_function_class)
 static JSBool
 function_new_resolve(JSContext *context,
                      JSObject  *obj,
-                     jsval      id,
+                     jsid       id,
                      uintN      flags,
                      JSObject **objp)
 {
@@ -112,7 +112,7 @@ function_new_resolve(JSContext *context,
 
     *objp = NULL;
 
-    if (!gjs_get_string_id(id, &name))
+    if (!gjs_get_string_id(context, id, &name))
         return JS_TRUE; /* not resolved, but no error */
 
     priv = priv_from_js(context, obj);
diff --git a/gi/ns.c b/gi/ns.c
index 84d09ed..df2e4b2 100644
--- a/gi/ns.c
+++ b/gi/ns.c
@@ -63,7 +63,7 @@ GJS_DEFINE_PRIV_FROM_JS(Ns, gjs_ns_class)
 static JSBool
 ns_new_resolve(JSContext *context,
                JSObject  *obj,
-               jsval      id,
+               jsid       id,
                uintN      flags,
                JSObject **objp)
 {
@@ -75,7 +75,7 @@ ns_new_resolve(JSContext *context,
 
     *objp = NULL;
 
-    if (!gjs_get_string_id(id, &name))
+    if (!gjs_get_string_id(context, id, &name))
         return JS_TRUE; /* not resolved, but no error */
 
     /* let Object.prototype resolve these */
diff --git a/gi/object.c b/gi/object.c
index 7a0acfb..e5a3d0c 100644
--- a/gi/object.c
+++ b/gi/object.c
@@ -121,7 +121,7 @@ init_g_param_from_property(JSContext  *context,
 static JSBool
 object_instance_get_prop(JSContext *context,
                          JSObject  *obj,
-                         jsval      id,
+                         jsid       id,
                          jsval     *value_p)
 {
     ObjectInstance *priv;
@@ -130,7 +130,7 @@ object_instance_get_prop(JSContext *context,
     GParamSpec *param;
     GValue gvalue = { 0, };
 
-    if (!gjs_get_string_id(id, &name))
+    if (!gjs_get_string_id(context, id, &name))
         return JS_TRUE; /* not resolved, but no error */
 
     priv = priv_from_js(context, obj);
@@ -178,14 +178,14 @@ object_instance_get_prop(JSContext *context,
 static JSBool
 object_instance_set_prop(JSContext *context,
                          JSObject  *obj,
-                         jsval      id,
+                         jsid       id,
                          jsval     *value_p)
 {
     ObjectInstance *priv;
     const char *name;
     GParameter param = { NULL, { 0, }};
 
-    if (!gjs_get_string_id(id, &name))
+    if (!gjs_get_string_id(context, id, &name))
         return JS_TRUE; /* not resolved, but no error */
 
     priv = priv_from_js(context, obj);
@@ -239,7 +239,7 @@ object_instance_set_prop(JSContext *context,
 static JSBool
 object_instance_new_resolve(JSContext *context,
                             JSObject  *obj,
-                            jsval      id,
+                            jsid       id,
                             uintN      flags,
                             JSObject **objp)
 {
@@ -248,7 +248,7 @@ object_instance_new_resolve(JSContext *context,
 
     *objp = NULL;
 
-    if (!gjs_get_string_id(id, &name))
+    if (!gjs_get_string_id(context, id, &name))
         return JS_TRUE; /* not resolved, but no error */
 
     priv = priv_from_js(context, obj);
@@ -459,27 +459,23 @@ object_instance_props_to_g_parameters(JSContext   *context,
         return JS_FALSE;
     }
 
-    prop_id = JSVAL_VOID;
+    prop_id = JSID_VOID;
     if (!JS_NextProperty(context, iter, &prop_id))
         return JS_FALSE;
 
-    if (prop_id != JSVAL_VOID) {
+    if (!JSID_IS_VOID(prop_id)) {
         gparams = g_array_new(/* nul term */ FALSE, /* clear */ TRUE,
                               sizeof(GParameter));
     } else {
         return JS_TRUE;
     }
 
-    while (prop_id != JSVAL_VOID) {
-        jsval nameval;
+    while (!JSID_IS_VOID(prop_id)) {
         const char *name;
         jsval value;
         GParameter gparam = { NULL, { 0, }};
 
-        if (!JS_IdToValue(context, prop_id, &nameval))
-            goto free_array_and_fail;
-
-        if (!gjs_get_string_id(nameval, &name))
+        if (!gjs_get_string_id(context, prop_id, &name))
             goto free_array_and_fail;
 
         if (!gjs_object_require_property(context, props, "property list", name, &value))
@@ -501,7 +497,7 @@ object_instance_props_to_g_parameters(JSContext   *context,
 
         g_array_append_val(gparams, gparam);
 
-        prop_id = JSVAL_VOID;
+        prop_id = JSID_VOID;
         if (!JS_NextProperty(context, iter, &prop_id))
             goto free_array_and_fail;
     }
@@ -859,7 +855,7 @@ real_connect_func(JSContext *context,
     const char *signal_name;
     GQuark signal_detail;
 
-    *retval = INT_TO_JSVAL(0);
+    *retval = JSID_VOID;
 
     priv = priv_from_js(context, obj);
     gjs_debug_gsignal("connect obj %p priv %p argc %d", obj, priv, argc);
diff --git a/gi/param.c b/gi/param.c
index 0a16848..dec875f 100644
--- a/gi/param.c
+++ b/gi/param.c
@@ -50,14 +50,14 @@ GJS_DEFINE_DYNAMIC_PRIV_FROM_JS(Param, gjs_param_class)
 static JSBool
 param_get_prop(JSContext *context,
                JSObject  *obj,
-               jsval      id,
+               jsid       id,
                jsval     *value_p)
 {
     Param *priv;
     const char *name;
     const char *value_str;
 
-    if (!gjs_get_string_id(id, &name))
+    if (!gjs_get_string_id(context, id, &name))
         return JS_TRUE; /* not something we affect, but no error */
 
     priv = priv_from_js(context, obj);
@@ -99,7 +99,7 @@ param_get_prop(JSContext *context,
 static JSBool
 param_new_resolve(JSContext *context,
                   JSObject  *obj,
-                  jsval      id,
+                  jsid       id,
                   uintN      flags,
                   JSObject **objp)
 {
@@ -108,7 +108,7 @@ param_new_resolve(JSContext *context,
 
     *objp = NULL;
 
-    if (!gjs_get_string_id(id, &name))
+    if (!gjs_get_string_id(context, id, &name))
         return JS_TRUE; /* not resolved, but no error */
 
     priv = priv_from_js(context, obj);
diff --git a/gi/repo.c b/gi/repo.c
index bb215bb..adecae9 100644
--- a/gi/repo.c
+++ b/gi/repo.c
@@ -124,7 +124,7 @@ resolve_namespace_object(JSContext  *context,
 static JSBool
 repo_new_resolve(JSContext *context,
                  JSObject  *obj,
-                 jsval      id,
+                 jsid       id,
                  uintN      flags,
                  JSObject **objp)
 {
@@ -134,7 +134,7 @@ repo_new_resolve(JSContext *context,
 
     *objp = NULL;
 
-    if (!gjs_get_string_id(id, &name))
+    if (!gjs_get_string_id(context, id, &name))
         return JS_TRUE; /* not resolved, but no error */
 
     /* let Object.prototype resolve these */
diff --git a/gi/union.c b/gi/union.c
index 77c70ce..1cf74a7 100644
--- a/gi/union.c
+++ b/gi/union.c
@@ -68,7 +68,7 @@ GJS_DEFINE_DYNAMIC_PRIV_FROM_JS(Union, gjs_union_class)
 static JSBool
 union_new_resolve(JSContext *context,
                   JSObject  *obj,
-                  jsval      id,
+                  jsid       id,
                   uintN      flags,
                   JSObject **objp)
 {
@@ -77,7 +77,7 @@ union_new_resolve(JSContext *context,
 
     *objp = NULL;
 
-    if (!gjs_get_string_id(id, &name))
+    if (!gjs_get_string_id(context, id, &name))
         return JS_TRUE; /* not resolved, but no error */
 
     priv = priv_from_js(context, obj);
diff --git a/gjs/byteArray.c b/gjs/byteArray.c
index bf0a7d8..d6d4e81 100644
--- a/gjs/byteArray.c
+++ b/gjs/byteArray.c
@@ -40,15 +40,15 @@ GJS_DEFINE_PRIV_FROM_JS(ByteArrayInstance, gjs_byte_array_class)
 
 static JSBool byte_array_get_prop      (JSContext    *context,
                                         JSObject     *obj,
-                                        jsval         id,
+                                        jsid          id,
                                         jsval        *value_p);
 static JSBool byte_array_set_prop      (JSContext    *context,
                                         JSObject     *obj,
-                                        jsval         id,
+                                        jsid          id,
                                         jsval        *value_p);
 static JSBool byte_array_new_resolve   (JSContext    *context,
                                         JSObject     *obj,
-                                        jsval         id,
+                                        jsid          id,
                                         uintN         flags,
                                         JSObject    **objp);
 static JSBool byte_array_constructor   (JSContext    *context,
@@ -187,10 +187,11 @@ byte_array_get_index(JSContext         *context,
 static JSBool
 byte_array_get_prop(JSContext *context,
                     JSObject  *obj,
-                    jsval      id,
+                    jsid       id,
                     jsval     *value_p)
 {
     ByteArrayInstance *priv;
+    jsval id_value;
 
     priv = priv_from_js(context, obj);
 
@@ -199,10 +200,13 @@ byte_array_get_prop(JSContext *context,
     if (priv->array == NULL)
         return JS_TRUE; /* prototype, not an instance. */
 
+    if (!JS_IdToValue(context, id, &id_value))
+        return JS_FALSE;
+
     /* First handle array indexing */
-    if (JSVAL_IS_NUMBER(id)) {
+    if (JSVAL_IS_NUMBER(id_value)) {
         gsize idx;
-        if (!gjs_value_to_gsize(context, id, &idx))
+        if (!gjs_value_to_gsize(context, id_value, &idx))
             return JS_FALSE;
         return byte_array_get_index(context, obj, priv, idx, value_p);
     }
@@ -217,7 +221,7 @@ byte_array_get_prop(JSContext *context,
 static JSBool
 byte_array_length_getter(JSContext *context,
                          JSObject  *obj,
-                         jsval      id,
+                         jsid       id,
                          jsval     *value_p)
 {
     ByteArrayInstance *priv;
@@ -236,7 +240,7 @@ byte_array_length_getter(JSContext *context,
 static JSBool
 byte_array_length_setter(JSContext *context,
                          JSObject  *obj,
-                         jsval      id,
+                         jsid       id,
                          jsval     *value_p)
 {
     ByteArrayInstance *priv;
@@ -295,10 +299,11 @@ byte_array_set_index(JSContext         *context,
 static JSBool
 byte_array_set_prop(JSContext *context,
                     JSObject  *obj,
-                    jsval      id,
+                    jsid       id,
                     jsval     *value_p)
 {
     ByteArrayInstance *priv;
+    jsval id_value;
 
     priv = priv_from_js(context, obj);
 
@@ -307,6 +312,9 @@ byte_array_set_prop(JSContext *context,
     if (priv->array == NULL)
         return JS_TRUE; /* prototype, not an instance. */
 
+    if (!JS_IdToValue(context, id, &id_value))
+        return JS_FALSE;
+
     /* First handle array indexing */
     if (JSVAL_IS_NUMBER(id)) {
         gsize idx;
@@ -345,11 +353,12 @@ byte_array_set_prop(JSContext *context,
 static JSBool
 byte_array_new_resolve(JSContext *context,
                        JSObject  *obj,
-                       jsval      id,
+                       jsid       id,
                        uintN      flags,
                        JSObject **objp)
 {
     ByteArrayInstance *priv;
+    jsval id_val;
 
     priv = priv_from_js(context, *objp);
 
@@ -358,9 +367,12 @@ byte_array_new_resolve(JSContext *context,
     if (priv->array == NULL)
         return JS_TRUE; /* prototype, not an instance. */
 
-    if (JSVAL_IS_NUMBER(id)) {
+    if (!JS_IdToValue(context, id, &id_val))
+        return JS_FALSE;
+
+    if (JSVAL_IS_NUMBER(id_val)) {
         gsize idx;
-        if (!gjs_value_to_gsize(context, id, &idx))
+        if (!gjs_value_to_gsize(context, id_val, &idx))
             return JS_FALSE;
         if (idx >= priv->array->len) {
             *objp = NULL;
diff --git a/gjs/compat.h b/gjs/compat.h
index 793ab5c..976d9c4 100644
--- a/gjs/compat.h
+++ b/gjs/compat.h
@@ -37,6 +37,10 @@ G_BEGIN_DECLS
 
 /* See https://bugzilla.gnome.org/show_bug.cgi?id=622896 */
 #ifndef HAVE_JS_ADDVALUEROOT
+
+/* The old JS_AddRoot accepted anything via void *, new
+ * api is stricter.
+ */
 #define JS_AddValueRoot JS_AddRoot
 #define JS_AddObjectRoot JS_AddRoot
 #define JS_AddStringRoot JS_AddRoot
@@ -45,6 +49,14 @@ G_BEGIN_DECLS
 #define JS_RemoveObjectRoot JS_RemoveRoot
 #define JS_RemoveStringRoot JS_RemoveRoot
 #define JS_RemoveGCThingRoot JS_RemoveRoot
+
+/* This one is complex; jsid appears to be explicitly
+ * different from JSVAL now.  If we're on an old xulrunner,
+ * define JSID_IS_VOID in a simple way.
+ */
+#define JSID_VOID JSVAL_VOID
+#define JSID_IS_VOID(id) (id == JSVAL_VOID)
+
 #endif
 
 G_END_DECLS
diff --git a/gjs/importer.c b/gjs/importer.c
index 81b87e4..ee42b48 100644
--- a/gjs/importer.c
+++ b/gjs/importer.c
@@ -361,15 +361,10 @@ load_module_elements(JSContext *context,
             return;
         }
 
-        while (idp != JSVAL_VOID) {
-            jsval nameval;
+        while (!JSID_IS_VOID(idp)) {
             const char *name;
 
-            if (!JS_IdToValue(context, idp, &nameval)) {
-                continue;
-            }
-
-            if (!gjs_get_string_id(nameval, &name)) {
+            if (!gjs_get_string_id(context, idp, &name)) {
                 continue;
             }
 
@@ -740,7 +735,7 @@ importer_new_enumerate(JSContext  *context,
             *state_p = JSVAL_NULL;
 
         if (id_p)
-            *id_p = JSVAL_ZERO;
+            *id_p = JSID_VOID;
 
         priv = priv_from_js(context, object);
         if (!priv)
@@ -908,7 +903,7 @@ importer_new_enumerate(JSContext  *context,
 static JSBool
 importer_new_resolve(JSContext *context,
                      JSObject  *obj,
-                     jsval      id,
+                     jsid       id,
                      uintN      flags,
                      JSObject **objp)
 {
@@ -918,7 +913,8 @@ importer_new_resolve(JSContext *context,
 
     *objp = NULL;
 
-    name = gjs_string_get_ascii(id);
+    if (!gjs_get_string_id(context, id, &name))
+        return JS_FALSE;
 
     /* let Object.prototype resolve these */
     if (strcmp(name, "valueOf") == 0 ||
diff --git a/gjs/jsapi-util-string.c b/gjs/jsapi-util-string.c
index 1cb72ea..e3ea477 100644
--- a/gjs/jsapi-util-string.c
+++ b/gjs/jsapi-util-string.c
@@ -420,7 +420,8 @@ gjs_string_get_uint16_data(JSContext       *context,
 
 /**
  * gjs_get_string_id:
- * @id_val: a jsval that is an object hash key (could be an int or string)
+ * @context: a #JSContext
+ * @id: a jsid that is an object hash key (could be an int or string)
  * @name_p place to store ASCII string version of key
  *
  * If the id is not a string ID, return false and set *name_p to %NULL.
@@ -429,9 +430,15 @@ gjs_string_get_uint16_data(JSContext       *context,
  * Returns: true if *name_p is non-%NULL
  **/
 JSBool
-gjs_get_string_id (jsval            id_val,
+gjs_get_string_id (JSContext       *context,
+                   jsid             id,
                    const char     **name_p)
 {
+    jsval id_val;
+
+    if (!JS_IdToValue(context, id, &id_val))
+        return JS_FALSE;
+
     if (JSVAL_IS_STRING(id_val)) {
         *name_p = JS_GetStringBytes(JSVAL_TO_STRING(id_val));
         return JS_TRUE;
diff --git a/gjs/jsapi-util.c b/gjs/jsapi-util.c
index aea99cb..2abe49e 100644
--- a/gjs/jsapi-util.c
+++ b/gjs/jsapi-util.c
@@ -696,19 +696,15 @@ gjs_log_object_props(JSContext      *context,
         goto done;
     }
 
-    prop_id = JSVAL_VOID;
+    prop_id = JSID_VOID;
     if (!JS_NextProperty(context, props_iter, &prop_id))
         goto done;
 
-    while (prop_id != JSVAL_VOID) {
-        jsval nameval;
-        const char *name;
+    while (!JSID_IS_VOID(prop_id)) {
         jsval propval;
+        const char *name;
 
-        if (!JS_IdToValue(context, prop_id, &nameval))
-            goto next;
-
-        if (!gjs_get_string_id(nameval, &name))
+        if (!gjs_get_string_id(context, prop_id, &name))
             goto next;
 
         if (!gjs_object_get_property(context, obj, name, &propval))
@@ -720,7 +716,7 @@ gjs_log_object_props(JSContext      *context,
                   gjs_value_debug_string(context, propval));
 
     next:
-        prop_id = JSVAL_VOID;
+        prop_id = JSID_VOID;
         if (!JS_NextProperty(context, props_iter, &prop_id))
             break;
     }
diff --git a/gjs/jsapi-util.h b/gjs/jsapi-util.h
index 9921805..39b782a 100644
--- a/gjs/jsapi-util.h
+++ b/gjs/jsapi-util.h
@@ -331,7 +331,8 @@ JSBool      gjs_string_get_uint16_data       (JSContext       *context,
                                               jsval            value,
                                               guint16        **data_p,
                                               gsize           *len_p);
-JSBool      gjs_get_string_id                (jsval            id_val,
+JSBool      gjs_get_string_id                (JSContext       *context,
+                                              jsid             id,
                                               const char     **name_p);
 const char* gjs_get_type_name                (jsval            value);
 
diff --git a/modules/dbus-exports.c b/modules/dbus-exports.c
index 2938d73..e0f6397 100644
--- a/modules/dbus-exports.c
+++ b/modules/dbus-exports.c
@@ -1408,14 +1408,14 @@ handle_introspect(JSContext      *context,
     JS_AddStringRoot(context, &key_str);
     props_iter = JS_NewPropertyIterator(context, dir_obj);
 
-    prop_id = JSVAL_VOID;
+    prop_id = JSID_VOID;
     if (!JS_NextProperty(context, props_iter, &prop_id)) {
         gjs_debug(GJS_DEBUG_DBUS,
                   "Failed to get next property iterating dbus directory");
         goto out;
     }
 
-    while (prop_id != JSVAL_VOID) {
+    while (!JSID_IS_VOID(prop_id)) {
         char *key;
         jsval keyval;
         jsval valueval = JSVAL_VOID;
@@ -1455,7 +1455,7 @@ handle_introspect(JSContext      *context,
                                    key);
         }
 
-        prop_id = JSVAL_VOID;
+        prop_id = JSID_VOID;
         if (!JS_NextProperty(context, props_iter, &prop_id)) {
             gjs_debug(GJS_DEBUG_DBUS,
                       "Failed to get next property iterating dbus object");
@@ -1660,7 +1660,7 @@ on_message(DBusConnection *connection,
 static JSBool
 exports_new_resolve(JSContext *context,
                     JSObject  *obj,
-                    jsval      id,
+                    jsid       id,
                     uintN      flags,
                     JSObject **objp)
 {
@@ -1669,7 +1669,7 @@ exports_new_resolve(JSContext *context,
 
     *objp = NULL;
 
-    if (!gjs_get_string_id(id, &name))
+    if (!gjs_get_string_id(context, id, &name))
         return JS_TRUE; /* not resolved, but no error */
 
     priv = priv_from_js(context, obj);
diff --git a/modules/dbus-values.c b/modules/dbus-values.c
index 31f6424..4519f93 100644
--- a/modules/dbus-values.c
+++ b/modules/dbus-values.c
@@ -776,11 +776,11 @@ append_dict(JSContext         *context,
         return JS_FALSE;
     }
 
-    prop_id = JSVAL_VOID;
+    prop_id = JSID_VOID;
     if (!JS_NextProperty(context, props_iter, &prop_id))
         return JS_FALSE;
 
-    while (prop_id != JSVAL_VOID) {
+    while (!JSID_IS_VOID(prop_id)) {
         jsval nameval;
         char *name;
         jsval propval;
@@ -864,7 +864,7 @@ append_dict(JSContext         *context,
         dbus_message_iter_close_container(&dict_iter, &entry_iter);
 
     next:
-        prop_id = JSVAL_VOID;
+        prop_id = JSID_VOID;
         if (!JS_NextProperty(context, props_iter, &prop_id))
             return JS_FALSE;
     }
diff --git a/modules/dbus.c b/modules/dbus.c
index b5fcd79..22e8f2f 100644
--- a/modules/dbus.c
+++ b/modules/dbus.c
@@ -1412,7 +1412,7 @@ gjs_js_dbus_watch_name(JSContext  *context,
 static JSBool
 unique_name_getter(JSContext  *context,
                    JSObject   *obj,
-                   jsval       id,
+                   jsid        id,
                    jsval      *value_p)
 {
     const char *name;
@@ -1422,7 +1422,8 @@ unique_name_getter(JSContext  *context,
     if (!get_bus_type_from_object(context, obj, &bus_type))
         return JS_FALSE;
 
-    name = gjs_string_get_ascii(id);
+    if (!gjs_get_string_id(context, id, &name))
+        return JS_FALSE;
 
     gjs_debug_jsprop(GJS_DEBUG_DBUS, "Get prop '%s' on dbus object", name);
 
@@ -1522,7 +1523,7 @@ gjs_js_dbus_start_service(JSContext  *context,
 static JSBool
 gjs_js_dbus_get_machine_id(JSContext *context,
                            JSObject  *obj,
-                           jsval      key,
+                           jsid       key,
                            jsval     *value)
 {
     char *machine_id;



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]