Source: gjs
Version: 1.30.0-2
Severity: serious

gjs fails to build after the latest update of iceweasel from 8.0 → 9.0.
I tried updating gjs (patch attached) but I don't know enough of mozjs
and gjs to fix the remaining failure:

# make -k
make  all-am
make[1]: Entering directory `/home/michael/debian/build-area/gjs-1.30.0'
\
#       source='gi/boxed.c' object='libgjs_la-boxed.lo' libtool=yes 
/bin/bash ./libtool  --tag=CC   --mode=compile gcc -DHAVE_CONFIG_H -I.   
-pthread -DXP_UNIX -DJS_THREADSAFE -I/usr/include/glib-2.0 
-I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/nspr 
-I/usr/include/gobject-introspection-1.0 -I/usr/include/mozjs   
-DGJS_TOP_SRCDIR=\".\" -DGJS_JS_DIR=\"/usr/share/gjs-1.0\" 
-DGJS_NATIVE_DIR=\"/usr/lib/gjs-1.0\" -DPKGLIBDIR=\"/usr/lib/gjs\" -I./gi 
-DGJS_COMPILATION   -Wnested-externs -Wmissing-prototypes -Wsign-compare 
-Wcast-align -Wpointer-arith -Wmissing-declarations -Wchar-subscripts -g -O2 
-fstack-protector --param=ssp-buffer-size=4 -Wformat -Wformat-security 
-Werror=format-security -Wall -c -o libgjs_la-boxed.lo `test -f 'gi/boxed.c' || 
echo './'`gi/boxed.c
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -pthread -DXP_UNIX -DJS_THREADSAFE 
-I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include 
-I/usr/include/nspr -I/usr/include/gobject-introspection-1.0 
-I/usr/include/mozjs -DGJS_TOP_SRCDIR=\".\" -DGJS_JS_DIR=\"/usr/share/gjs-1.0\" 
-DGJS_NATIVE_DIR=\"/usr/lib/gjs-1.0\" -DPKGLIBDIR=\"/usr/lib/gjs\" -I./gi 
-DGJS_COMPILATION -Wnested-externs -Wmissing-prototypes -Wsign-compare 
-Wcast-align -Wpointer-arith -Wmissing-declarations -Wchar-subscripts -g -O2 
-fstack-protector --param=ssp-buffer-size=4 -Wformat -Wformat-security 
-Werror=format-security -Wall -c gi/boxed.c  -fPIC -DPIC -o 
.libs/libgjs_la-boxed.o
gi/boxed.c:65:1: error: initializer element is not constant
gi/boxed.c:65:1: error: (near initialization for 
'unthreadsafe_template_for_constructor.parent_jsval')
gi/boxed.c: In function 'type_can_be_allocated_directly':
gi/boxed.c:1111:17: warning: enumeration value 'GI_INFO_TYPE_INVALID_0' not 
handled in switch [-Wswitch]
make[1]: *** [libgjs_la-boxed.lo] Error 1
make[1]: Target `all-am' not remade because of errors.
make[1]: Leaving directory `/home/michael/debian/build-area/gjs-1.30.0'
make: *** [all] Error 2


Mike, do you maybe have an idea how to fix this build failure?

Cheers,
Michael


-- System Information:
Debian Release: wheezy/sid
  APT prefers unstable
  APT policy: (500, 'unstable'), (500, 'testing'), (200, 'experimental')
Architecture: amd64 (x86_64)

Kernel: Linux 3.1.0-1-amd64 (SMP w/4 CPU cores)
Locale: LANG=de_DE.utf8, LC_CTYPE=de_DE.utf8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

-- no debconf information
Index: gjs-1.30.0/gi/boxed.c
===================================================================
--- gjs-1.30.0.orig/gi/boxed.c	2011-12-23 04:49:26.940542601 +0100
+++ gjs-1.30.0/gi/boxed.c	2011-12-23 04:50:46.968539771 +0100
@@ -1267,7 +1267,7 @@
 
     constructor = NULL;
     gjs_object_get_property(context, in_object, constructor_name, &value);
-    if (value != JSVAL_VOID) {
+    if (!JSVAL_IS_VOID(value)) {
         if (!JSVAL_IS_OBJECT(value)) {
             gjs_throw(context, "Property '%s' does not look like a constructor",
                       constructor_name);
Index: gjs-1.30.0/gi/function.c
===================================================================
--- gjs-1.30.0.orig/gi/function.c	2011-12-23 04:49:26.960542601 +0100
+++ gjs-1.30.0/gi/function.c	2011-12-23 04:50:46.968539771 +0100
@@ -257,7 +257,7 @@
 {
     GjsCallbackTrampoline *trampoline;
 
-    if (function == JSVAL_NULL) {
+    if (JSVAL_IS_NULL(function)) {
         return NULL;
     }
 
Index: gjs-1.30.0/gi/object.c
===================================================================
--- gjs-1.30.0.orig/gi/object.c	2011-12-23 04:49:26.884542603 +0100
+++ gjs-1.30.0/gi/object.c	2011-12-23 04:50:46.972539771 +0100
@@ -1404,7 +1404,7 @@
      */
     gjs_object_get_property(context, in_object, constructor_name, &value);
     constructor = NULL;
-    if (value != JSVAL_VOID) {
+    if (!JSVAL_IS_VOID(value)) {
        if (!JSVAL_IS_OBJECT(value)) {
             gjs_throw(context, "Property '%s' does not look like a constructor",
                       constructor_name);
Index: gjs-1.30.0/gi/param.c
===================================================================
--- gjs-1.30.0.orig/gi/param.c	2011-12-23 04:49:26.920542602 +0100
+++ gjs-1.30.0/gi/param.c	2011-12-23 04:50:46.972539771 +0100
@@ -309,7 +309,7 @@
     constructor_name = "ParamSpec";
 
     gjs_object_get_property(context, in_object, constructor_name, &value);
-    if (value != JSVAL_VOID) {
+    if (!JSVAL_IS_VOID(value)) {
         JSObject *constructor;
 
         if (!JSVAL_IS_OBJECT(value)) {
Index: gjs-1.30.0/gi/union.c
===================================================================
--- gjs-1.30.0.orig/gi/union.c	2011-12-23 04:49:26.868542604 +0100
+++ gjs-1.30.0/gi/union.c	2011-12-23 04:50:46.972539771 +0100
@@ -511,7 +511,7 @@
     if (constructor_p) {
         *constructor_p = NULL;
         gjs_object_get_property(context, in_object, constructor_name, &value);
-        if (value != JSVAL_VOID) {
+        if (!JSVAL_IS_VOID(value)) {
             if (!JSVAL_IS_OBJECT(value)) {
                 gjs_throw(context, "Property '%s' does not look like a constructor",
                           constructor_name);
Index: gjs-1.30.0/gi/value.c
===================================================================
--- gjs-1.30.0.orig/gi/value.c	2011-12-23 04:49:26.904542603 +0100
+++ gjs-1.30.0/gi/value.c	2011-12-23 04:50:46.972539771 +0100
@@ -124,7 +124,7 @@
     gjs_closure_invoke(closure, argc, argv, &rval);
 
     if (return_value != NULL) {
-        if (rval == JSVAL_VOID) {
+        if (JSVAL_IS_VOID(rval)) {
             /* something went wrong invoking, error should be set already */
             goto cleanup;
         }
Index: gjs-1.30.0/gjs/byteArray.c
===================================================================
--- gjs-1.30.0.orig/gjs/byteArray.c	2011-12-23 04:49:27.000542598 +0100
+++ gjs-1.30.0/gjs/byteArray.c	2011-12-23 04:50:46.972539771 +0100
@@ -775,7 +775,7 @@
             goto out;
         }
 
-        if (elem == JSVAL_VOID)
+        if (JSVAL_IS_VOID(elem))
             continue;
 
         if (!gjs_value_to_byte(context, elem, &b))
Index: gjs-1.30.0/gjs/importer.c
===================================================================
--- gjs-1.30.0.orig/gjs/importer.c	2011-12-23 04:49:27.036542597 +0100
+++ gjs-1.30.0/gjs/importer.c	2011-12-23 04:50:46.976539771 +0100
@@ -534,7 +534,7 @@
             goto out;
         }
 
-        if (elem == JSVAL_VOID)
+        if (JSVAL_IS_VOID(elem))
             continue;
 
         if (!JSVAL_IS_STRING(elem)) {
@@ -566,7 +566,7 @@
                                         module_obj,
                                         name,
                                         &obj_val)) {
-                if (obj_val != JSVAL_VOID &&
+                if (!JSVAL_IS_VOID(obj_val) &&
                     JS_DefineProperty(context, obj,
                                       name, obj_val,
                                       NULL, NULL,
@@ -793,7 +793,7 @@
                 return JS_FALSE;
             }
 
-            if (elem == JSVAL_VOID)
+            if (JSVAL_IS_VOID(elem))
                 continue;
 
             if (!JSVAL_IS_STRING(elem)) {
@@ -868,7 +868,7 @@
             return JS_FALSE;
         }
 
-        if (*state_p == JSVAL_NULL) /* Iterating prototype */
+        if (JSVAL_IS_NULL(*state_p)) /* Iterating prototype */
             return JS_TRUE;
 
         iter = JSVAL_TO_PRIVATE(*state_p);
@@ -890,7 +890,7 @@
     }
 
     case JSENUMERATE_DESTROY: {
-        if (state_p && *state_p != JSVAL_NULL) {
+        if (state_p && !JSVAL_IS_NULL(*state_p)) {
             iter = JSVAL_TO_PRIVATE(*state_p);
 
             importer_iterator_free(iter);
Index: gjs-1.30.0/gjs/jsapi-util.c
===================================================================
--- gjs-1.30.0.orig/gjs/jsapi-util.c	2011-12-23 04:49:27.056542596 +0100
+++ gjs-1.30.0/gjs/jsapi-util.c	2011-12-23 04:50:46.976539771 +0100
@@ -407,7 +407,7 @@
 
     JS_EndRequest(context);
 
-    return value != JSVAL_VOID;
+    return !JSVAL_IS_VOID(value);
 }
 
 /* Returns whether the object had the property; if the object did
@@ -434,7 +434,7 @@
     if (value_p)
         *value_p = value;
 
-    if (value != JSVAL_VOID) {
+    if (!JSVAL_IS_VOID(value)) {
         JS_ClearPendingException(context); /* in case JS_GetProperty() was on crack */
         JS_EndRequest(context);
         return TRUE;
@@ -550,7 +550,7 @@
                                          class_copy->base.name, &value))
             goto error;
     }
-    g_assert(value != JSVAL_VOID);
+    g_assert(!JSVAL_IS_VOID(value));
     g_assert(prototype != NULL);
 
     /* Now manually define our constructor with a sane name, in the
@@ -1277,7 +1277,7 @@
 {
     if (JSVAL_IS_NULL(value)) {
         return "null";
-    } else if (value == JSVAL_VOID) {
+    } else if (JSVAL_IS_VOID(value)) {
         return "undefined";
     } else if (JSVAL_IS_INT(value)) {
         return "integer";
Index: gjs-1.30.0/gjs/jsapi-util.h
===================================================================
--- gjs-1.30.0.orig/gjs/jsapi-util.h	2011-12-23 04:49:26.980542599 +0100
+++ gjs-1.30.0/gjs/jsapi-util.h	2011-12-23 04:50:46.976539771 +0100
@@ -184,7 +184,7 @@
     } \
     if (!JS_DefineProperty(context, module, proto_name, \
                            rval, NULL, NULL, GJS_MODULE_PROP_FLAGS)) \
-        return JS_FALSE; \
+        return JSVAL_FALSE; \
     return rval; \
 }
 
Index: gjs-1.30.0/gjs/native.c
===================================================================
--- gjs-1.30.0.orig/gjs/native.c	2011-12-23 04:49:27.016542599 +0100
+++ gjs-1.30.0/gjs/native.c	2011-12-23 04:50:46.976539771 +0100
@@ -82,7 +82,7 @@
     jsval value;
 
     if (gjs_object_get_property(context, module_obj, "__parentModule__", &value) &&
-        value != JSVAL_NULL &&
+        !JSVAL_IS_NULL(value) &&
         JSVAL_IS_OBJECT(value)) {
         return JSVAL_TO_OBJECT(value);
     } else {
Index: gjs-1.30.0/modules/cairo-context.c
===================================================================
--- gjs-1.30.0.orig/modules/cairo-context.c	2011-12-23 04:49:26.772542607 +0100
+++ gjs-1.30.0/modules/cairo-context.c	2011-12-23 04:50:46.980539770 +0100
@@ -574,7 +574,7 @@
         if (!JS_GetElement(context, dashes, i, &elem)) {
             goto out;
         }
-        if (elem == JSVAL_VOID)
+        if (JSVAL_IS_VOID(elem))
             continue;
 
         if (!JS_ValueToNumber(context, elem, &b))
Index: gjs-1.30.0/modules/cairo.c
===================================================================
--- gjs-1.30.0.orig/modules/cairo.c	2011-12-23 04:49:26.828542605 +0100
+++ gjs-1.30.0/modules/cairo.c	2011-12-23 04:50:46.980539770 +0100
@@ -52,73 +52,73 @@
 
     obj = gjs_cairo_context_create_proto(context, module,
                                          "Context", NULL);
-    if (obj == JSVAL_NULL)
+    if (JSVAL_IS_NULL(obj))
         return JS_FALSE;
     gjs_cairo_context_init(context);
 
     obj = gjs_cairo_surface_create_proto(context, module,
                                          "Surface", NULL);
-    if (obj == JSVAL_NULL)
+    if (JSVAL_IS_NULL(obj))
         return JS_FALSE;
     surface_proto = JSVAL_TO_OBJECT(obj);
 
     obj = gjs_cairo_image_surface_create_proto(context, module,
                                                "ImageSurface", surface_proto);
-    if (obj == JSVAL_NULL)
+    if (JSVAL_IS_NULL(obj))
         return JS_FALSE;
     gjs_cairo_image_surface_init(context, JSVAL_TO_OBJECT(obj));
 
 #if CAIRO_HAS_PS_SURFACE
     obj = gjs_cairo_ps_surface_create_proto(context, module,
                                             "PSSurface", surface_proto);
-    if (obj == JSVAL_NULL)
+    if (JSVAL_IS_NULL(obj))
         return JS_FALSE;
 #endif
 
 #if CAIRO_HAS_PDF_SURFACE
     obj = gjs_cairo_pdf_surface_create_proto(context, module,
                                              "PDFSurface", surface_proto);
-    if (obj == JSVAL_NULL)
+    if (JSVAL_IS_NULL(obj))
         return JS_FALSE;
 #endif
 
 #if CAIRO_HAS_SVG_SURFACE
     obj = gjs_cairo_svg_surface_create_proto(context, module,
                                              "SVGSurface", surface_proto);
-    if (obj == JSVAL_NULL)
+    if (JSVAL_IS_NULL(obj))
         return JS_FALSE;
 #endif
 
     obj = gjs_cairo_pattern_create_proto(context, module,
                                          "Pattern", NULL);
-    if (obj == JSVAL_NULL)
+    if (JSVAL_IS_NULL(obj))
         return JS_FALSE;
     pattern_proto = JSVAL_TO_OBJECT(obj);
 
     obj = gjs_cairo_gradient_create_proto(context, module,
                                          "Gradient", pattern_proto);
-    if (obj == JSVAL_NULL)
+    if (JSVAL_IS_NULL(obj))
         return JS_FALSE;
     gradient_proto = JSVAL_TO_OBJECT(obj);
 
     obj = gjs_cairo_linear_gradient_create_proto(context, module,
                                                  "LinearGradient", gradient_proto);
-    if (obj == JSVAL_NULL)
+    if (JSVAL_IS_NULL(obj))
         return JS_FALSE;
 
     obj = gjs_cairo_radial_gradient_create_proto(context, module,
                                                  "RadialGradient", gradient_proto);
-    if (obj == JSVAL_NULL)
+    if (JSVAL_IS_NULL(obj))
         return JS_FALSE;
 
     obj = gjs_cairo_surface_pattern_create_proto(context, module,
                                                  "SurfacePattern", pattern_proto);
-    if (obj == JSVAL_NULL)
+    if (JSVAL_IS_NULL(obj))
         return JS_FALSE;
 
     obj = gjs_cairo_solid_pattern_create_proto(context, module,
                                                "SolidPattern", pattern_proto);
-    if (obj == JSVAL_NULL)
+    if (JSVAL_IS_NULL(obj))
         return JS_FALSE;
 
     return JS_TRUE;
Index: gjs-1.30.0/modules/console.c
===================================================================
--- gjs-1.30.0.orig/modules/console.c	2011-12-23 04:49:26.808542606 +0100
+++ gjs-1.30.0/modules/console.c	2011-12-23 04:50:46.980539770 +0100
@@ -224,7 +224,7 @@
         if (JS_GetPendingException(context, &result)) {
             str = JS_ValueToString(context, result);
             JS_ClearPendingException(context);
-        } else if (result == JSVAL_VOID) {
+        } else if (JSVAL_IS_VOID(result)) {
             goto next;
         } else {
             str = JS_ValueToString(context, result);
Index: gjs-1.30.0/modules/dbus-exports.c
===================================================================
--- gjs-1.30.0.orig/modules/dbus-exports.c	2011-12-23 04:49:26.792542607 +0100
+++ gjs-1.30.0/modules/dbus-exports.c	2011-12-23 04:50:46.980539770 +0100
@@ -252,7 +252,7 @@
 
     dbus_message_iter_init_append(reply, &arg_iter);
 
-    if (rval == JSVAL_VOID || g_str_equal(signature, "")) {
+    if (JSVAL_IS_VOID(rval) || g_str_equal(signature, "")) {
         /* We don't want to send anything in these cases so skip the
          * marshalling altogether.
          */
@@ -681,7 +681,7 @@
 
         gjs_object_get_property(context, obj, elements[i], &value);
 
-        if (value == JSVAL_VOID ||
+        if (JSVAL_IS_VOID(value) ||
             JSVAL_IS_NULL(value) ||
             !JSVAL_IS_OBJECT(value)) {
             obj = NULL;
@@ -701,7 +701,7 @@
     if (obj != NULL) {
         gjs_object_get_property(context, obj, "-impl-", &value);
 
-        if (value == JSVAL_VOID ||
+        if (JSVAL_IS_VOID(value) ||
             JSVAL_IS_NULL(value) ||
             !JSVAL_IS_OBJECT(value)) {
             obj = NULL;
@@ -724,7 +724,7 @@
                             method_name,
                             method_value);
 
-    if (*method_value == JSVAL_VOID ||
+    if (JSVAL_IS_VOID(*method_value) ||
         JSVAL_IS_NULL(*method_value) ||
         !JSVAL_IS_OBJECT(*method_value)) {
         return JS_FALSE;
@@ -772,7 +772,7 @@
      * have any properties so there's no case where
      * we actually want to use it.
      */
-    if (iface_val == JSVAL_VOID &&
+    if (JSVAL_IS_VOID(iface_val) &&
         strcmp(iface, DBUS_INTERFACE_PROPERTIES) == 0) {
         gjs_debug(GJS_DEBUG_DBUS,
                   "Changing interface to work around GNOME bug 569933");
@@ -785,7 +785,7 @@
         }
     }
 
-    if (iface_val == JSVAL_VOID) {
+    if (JSVAL_IS_VOID(iface_val)) {
         /* NOT an exception ... object simply lacks the interface */
         return JS_TRUE;
     }
@@ -938,7 +938,7 @@
         return JS_FALSE;
     }
 
-    if (properties_array_val == JSVAL_VOID) {
+    if (JSVAL_IS_VOID(properties_array_val)) {
         /* NOT an exception ... interface simply has no properties */
         return JS_TRUE;
     }
@@ -949,7 +949,7 @@
         property_val = JSVAL_VOID;
         if (!JS_GetElement(context, JSVAL_TO_OBJECT(properties_array_val),
                            i, &property_val) ||
-            property_val == JSVAL_VOID) {
+            JSVAL_IS_VOID(property_val)) {
             gjs_throw(context,
                       "Error accessing element %d of properties array",
                       i);
@@ -1150,7 +1150,7 @@
     dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY,
                                      "{sv}", &dict_iter);
 
-    if (properties_array_val != JSVAL_VOID) {
+    if (!JSVAL_IS_VOID(properties_array_val)) {
         for (i = 0; i < length; ++i) {
             jsval property_val;
             PropertyDetails details;
@@ -1162,7 +1162,7 @@
             property_val = JSVAL_VOID;
             if (!JS_GetElement(context, JSVAL_TO_OBJECT(properties_array_val),
                                i, &property_val) ||
-                property_val == JSVAL_VOID) {
+                JSVAL_IS_VOID(property_val)) {
                 gjs_throw(context,
                           "Error accessing element %d of properties array",
                           i);
Index: gjs-1.30.0/modules/dbus-values.c
===================================================================
--- gjs-1.30.0.orig/modules/dbus-values.c	2011-12-23 04:49:26.848542605 +0100
+++ gjs-1.30.0/modules/dbus-values.c	2011-12-23 04:50:46.984539770 +0100
@@ -794,14 +794,14 @@
                             "_dbus_signatures",
                             &prop_signatures);
 
-    if (prop_signatures != JSVAL_VOID &&
+    if (!JSVAL_IS_VOID(prop_signatures) &&
         !JSVAL_IS_OBJECT(prop_signatures)) {
         gjs_throw(context,
                   "_dbus_signatures prop must be an object");
         return JS_FALSE;
     }
 
-    if (prop_signatures != JSVAL_VOID &&
+    if (!JSVAL_IS_VOID(prop_signatures) &&
         dbus_signature_iter_get_current_type(&dict_value_sig_iter) !=
         DBUS_TYPE_VARIANT) {
         gjs_throw(context,
@@ -839,13 +839,13 @@
 
         /* see if this prop has a forced signature */
         value_signature = NULL;
-        if (prop_signatures != JSVAL_VOID) {
+        if (!JSVAL_IS_VOID(prop_signatures)) {
             jsval signature_value;
             signature_value = JSVAL_VOID;
             gjs_object_get_property(context,
                                     JSVAL_TO_OBJECT(prop_signatures),
                                     name, &signature_value);
-            if (signature_value != JSVAL_VOID) {
+            if (!JSVAL_IS_VOID(signature_value)) {
                 value_signature = gjs_string_get_ascii(context,
                                                                signature_value);
                 if (value_signature == NULL) {
@@ -1020,7 +1020,7 @@
             if (!append_dict(context, iter, sig_iter, obj))
                 return JS_FALSE;
         }
-    } else if (value == JSVAL_VOID) {
+    } else if (JSVAL_IS_VOID(value)) {
         gjs_debug(GJS_DEBUG_DBUS, "Can't send void (undefined) values over dbus");
         gjs_throw(context, "Can't send void (undefined) values over dbus");
         return JS_FALSE;
Index: gjs-1.30.0/gjs/jsapi-private.cpp
===================================================================
--- gjs-1.30.0.orig/gjs/jsapi-private.cpp	2011-12-23 04:49:27.076542597 +0100
+++ gjs-1.30.0/gjs/jsapi-private.cpp	2011-12-23 06:44:44.909713645 +0100
@@ -31,6 +31,10 @@
 #include "jsapi-private.h"
 #include "compat.h"
 
+#ifndef UINT32_MAX
+#define UINT32_MAX 4294967295U
+#endif
+
 #include <string.h>
 #include <jscntxt.h>
 

Reply via email to