Hello community,

here is the log from the commit of package gjs for openSUSE:Factory checked in 
at 2018-11-18 23:25:06
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gjs (Old)
 and      /work/SRC/openSUSE:Factory/.gjs.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "gjs"

Sun Nov 18 23:25:06 2018 rev:78 rq:648880 version:1.54.3

Changes:
--------
--- /work/SRC/openSUSE:Factory/gjs/gjs.changes  2018-10-24 07:42:21.067381742 
+0200
+++ /work/SRC/openSUSE:Factory/.gjs.new/gjs.changes     2018-11-18 
23:25:09.245992027 +0100
@@ -1,0 +2,13 @@
+Tue Nov 13 09:59:27 UTC 2018 - [email protected]
+
+- Update to version 1.54.3:
+  + object: Fix write-only properties.
+  + SIGSEGV when exiting gnome-shell.
+  + SelectionData.get_targets crashes with "Unable to resize
+    vector".
+  + Gnome-shell crashes on destroying cached param specs.
+  + GType memleak fixes.
+  + Fix build with --enable-dtrace and create CI job to ensure it
+    doesn't break in the future.
+
+-------------------------------------------------------------------

Old:
----
  gjs-1.54.2.tar.xz

New:
----
  gjs-1.54.3.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ gjs.spec ++++++
--- /var/tmp/diff_new_pack.LtcFWX/_old  2018-11-18 23:25:09.677991501 +0100
+++ /var/tmp/diff_new_pack.LtcFWX/_new  2018-11-18 23:25:09.681991496 +0100
@@ -21,7 +21,7 @@
 # remove all conditional macros and enable systemtap.
 %bcond_with     systemtap
 Name:           gjs
-Version:        1.54.2
+Version:        1.54.3
 Release:        0
 Summary:        JavaScript bindings based on gobject-introspection and Mozilla
 License:        MIT AND LGPL-2.0-or-later

++++++ gjs-1.54.2.tar.xz -> gjs-1.54.3.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gjs-1.54.2/NEWS new/gjs-1.54.3/NEWS
--- old/gjs-1.54.2/NEWS 2018-10-22 16:27:05.000000000 +0200
+++ new/gjs-1.54.3/NEWS 2018-11-12 18:16:04.000000000 +0100
@@ -1,3 +1,17 @@
+Version 1.54.3
+--------------
+
+- Closed bugs and merge requests:
+  * object: Fix write-only properties [!246, Philip Chimento]
+  * SIGSEGV when exiting gnome-shell [#212, !247, Andrea Azzarone]
+  * SelectionData.get_targets crashes with "Unable to resize vector" [#201,
+    !241, Philip Chimento]
+  * Gnome-shell crashes on destroying cached param specs [#213, !240, Marco
+    Trevisan]
+  * GType memleak fixes [!244, Marco Trevisan]
+  * Fix build with --enable-dtrace and create CI job to ensure it doesn't break
+    in the future [#196, !253, Philip Chimento]
+
 Version 1.54.2
 --------------
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gjs-1.54.2/configure new/gjs-1.54.3/configure
--- old/gjs-1.54.2/configure    2018-10-22 16:17:08.000000000 +0200
+++ new/gjs-1.54.3/configure    2018-11-12 18:17:13.000000000 +0100
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for gjs 1.54.2.
+# Generated by GNU Autoconf 2.69 for gjs 1.54.3.
 #
 # Report bugs to <http://bugzilla.gnome.org/enter_bug.cgi?product=gjs>.
 #
@@ -591,8 +591,8 @@
 # Identity of this package.
 PACKAGE_NAME='gjs'
 PACKAGE_TARNAME='gjs'
-PACKAGE_VERSION='1.54.2'
-PACKAGE_STRING='gjs 1.54.2'
+PACKAGE_VERSION='1.54.3'
+PACKAGE_STRING='gjs 1.54.3'
 PACKAGE_BUGREPORT='http://bugzilla.gnome.org/enter_bug.cgi?product=gjs'
 PACKAGE_URL='https://wiki.gnome.org/Projects/Gjs'
 
@@ -1449,7 +1449,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures gjs 1.54.2 to adapt to many kinds of systems.
+\`configure' configures gjs 1.54.3 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1519,7 +1519,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of gjs 1.54.2:";;
+     short | recursive ) echo "Configuration of gjs 1.54.3:";;
    esac
   cat <<\_ACEOF
 
@@ -1697,7 +1697,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-gjs configure 1.54.2
+gjs configure 1.54.3
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2248,7 +2248,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by gjs $as_me 1.54.2, which was
+It was created by gjs $as_me 1.54.3, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -3111,7 +3111,7 @@
 
 # Define the identity of the package.
  PACKAGE='gjs'
- VERSION='1.54.2'
+ VERSION='1.54.3'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -3338,10 +3338,10 @@
 
 
 
-GJS_VERSION=15402
+GJS_VERSION=15403
 
 
-$as_echo "#define GJS_VERSION (1 * 100 + 54) * 100 + 2" >>confdefs.h
+$as_echo "#define GJS_VERSION (1 * 100 + 54) * 100 + 3" >>confdefs.h
 
 
 GETTEXT_PACKAGE=gjs
@@ -23815,7 +23815,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by gjs $as_me 1.54.2, which was
+This file was extended by gjs $as_me 1.54.3, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -23886,7 +23886,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; 
s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-gjs config.status 1.54.2
+gjs config.status 1.54.3
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gjs-1.54.2/configure.ac new/gjs-1.54.3/configure.ac
--- old/gjs-1.54.2/configure.ac 2018-10-22 16:10:59.000000000 +0200
+++ new/gjs-1.54.3/configure.ac 2018-11-12 18:16:04.000000000 +0100
@@ -3,7 +3,7 @@
 
 m4_define(pkg_major_version, 1)
 m4_define(pkg_minor_version, 54)
-m4_define(pkg_micro_version, 2)
+m4_define(pkg_micro_version, 3)
 m4_define(pkg_version, pkg_major_version.pkg_minor_version.pkg_micro_version)
 m4_define(pkg_int_version, (pkg_major_version * 100 + pkg_minor_version) * 100 
+ pkg_micro_version)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gjs-1.54.2/gi/arg.cpp new/gjs-1.54.3/gi/arg.cpp
--- old/gjs-1.54.2/gi/arg.cpp   2018-10-22 16:10:59.000000000 +0200
+++ new/gjs-1.54.3/gi/arg.cpp   2018-11-12 18:03:55.000000000 +0100
@@ -965,6 +965,16 @@
                                  JS::MutableHandleValue value)
 {
     GValue *values = (GValue *)array;
+
+    // a null array pointer takes precedence over whatever `length` says
+    if (!values) {
+        JSObject* jsarray = JS_NewArrayObject(context, 0);
+        if (!jsarray)
+            return false;
+        value.setObject(*jsarray);
+        return true;
+    }
+
     unsigned int i;
     JS::AutoValueVector elems(context);
     if (!elems.resize(length))
@@ -2283,6 +2293,15 @@
     if (element_type == GI_TYPE_TAG_UNICHAR)
         return gjs_string_from_ucs4(context, (gunichar *) array, length, 
value_p);
 
+    // a null array pointer takes precedence over whatever `length` says
+    if (!array) {
+        JSObject* jsarray = JS_NewArrayObject(context, 0);
+        if (!jsarray)
+            return false;
+        value_p.setObject(*jsarray);
+        return true;
+    }
+
     JS::AutoValueVector elems(context);
     if (!elems.resize(length))
         g_error("Unable to resize vector");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gjs-1.54.2/gi/gtype.cpp new/gjs-1.54.3/gi/gtype.cpp
--- old/gjs-1.54.2/gi/gtype.cpp 2018-10-22 16:04:59.000000000 +0200
+++ new/gjs-1.54.3/gi/gtype.cpp 2018-11-12 18:04:16.000000000 +0100
@@ -63,13 +63,18 @@
                            void          *data)
 {
     for (auto iter = weak_pointer_list.begin(); iter != 
weak_pointer_list.end(); ) {
-        auto heap_wrapper = static_cast<JS::Heap<JSObject *> 
*>(g_type_get_qdata(*iter, gjs_get_gtype_wrapper_quark()));
+        GType gtype = *iter;
+        auto heap_wrapper = static_cast<JS::Heap<JSObject *> *>(
+            g_type_get_qdata(gtype, gjs_get_gtype_wrapper_quark()));
         JS_UpdateWeakPointerAfterGC(heap_wrapper);
 
         /* No read barriers are needed if the only thing we are doing with the
          * pointer is comparing it to nullptr. */
-        if (heap_wrapper->unbarrieredGet() == nullptr)
+        if (heap_wrapper->unbarrieredGet() == nullptr) {
+            g_type_set_qdata(gtype, gjs_get_gtype_wrapper_quark(), nullptr);
             iter = weak_pointer_list.erase(iter);
+            delete heap_wrapper;
+        }
         else
             iter++;
     }
@@ -95,8 +100,12 @@
     if (G_UNLIKELY(gtype == 0))
         return;
 
-    weak_pointer_list.erase(gtype);
+    auto heap_wrapper = static_cast<JS::Heap<JSObject*>*>(
+        g_type_get_qdata(gtype, gjs_get_gtype_wrapper_quark()));
+
     g_type_set_qdata(gtype, gjs_get_gtype_wrapper_quark(), NULL);
+    weak_pointer_list.erase(gtype);
+    delete heap_wrapper;
 }
 
 static bool
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gjs-1.54.2/gi/object.cpp new/gjs-1.54.3/gi/object.cpp
--- old/gjs-1.54.2/gi/object.cpp        2018-10-22 16:10:59.000000000 +0200
+++ new/gjs-1.54.3/gi/object.cpp        2018-11-12 18:04:24.000000000 +0100
@@ -287,7 +287,8 @@
 
     gname = gjs_hyphen_from_camel(js_prop_name);
     GObjectClass *gobj_class = G_OBJECT_CLASS(g_type_class_ref(m_gtype));
-    GjsAutoParam param_spec = g_object_class_find_property(gobj_class, gname);
+    GParamSpec* pspec = g_object_class_find_property(gobj_class, gname);
+    GjsAutoParam param_spec(pspec, GjsAutoParam::TakeOwnership());
     g_type_class_unref(gobj_class);
     g_free(gname);
 
@@ -386,8 +387,10 @@
     if (g_param_spec_get_qdata(param, ObjectInstance::custom_property_quark()))
         return true;
 
-    if ((param->flags & G_PARAM_READABLE) == 0)
+    if ((param->flags & G_PARAM_READABLE) == 0) {
+        rval.setUndefined();
         return true;
+    }
 
     gjs_debug_jsprop(GJS_DEBUG_GOBJECT, "Accessing GObject property %s",
                      param->name);
@@ -691,10 +694,7 @@
         prop_info.reset();
     }
 
-    if (!prop_info)
-        return false;
-
-    return g_property_info_get_flags(prop_info) & G_PARAM_READABLE;
+    return !!prop_info;
 }
 
 bool ObjectPrototype::lazy_define_gobject_property(JSContext* cx,
@@ -812,14 +812,14 @@
                 return true;
             }
         }
+
+        g_free(canonical_name);
+        return false;
     }
 
     g_free(canonical_name);
 
-    if (!prop_info)
-        return false;
-
-    return g_property_info_get_flags(prop_info) & G_PARAM_READABLE;
+    return true;
 }
 
 bool ObjectBase::resolve(JSContext* cx, JS::HandleObject obj, JS::HandleId id,
@@ -1618,7 +1618,7 @@
 ObjectInstance::~ObjectInstance() {
     debug_lifecycle("Finalize");
 
-    TRACE(GJS_OBJECT_PROXY_FINALIZE(priv, m_gobj, ns(), name()));
+    TRACE(GJS_OBJECT_PROXY_FINALIZE(this, m_gobj, ns(), name()));
 
     invalidate_all_closures();
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gjs-1.54.2/gjs/byteArray.cpp 
new/gjs-1.54.3/gjs/byteArray.cpp
--- old/gjs-1.54.2/gjs/byteArray.cpp    2018-10-22 16:10:59.000000000 +0200
+++ new/gjs-1.54.3/gjs/byteArray.cpp    2018-11-12 18:03:55.000000000 +0100
@@ -291,8 +291,12 @@
 }
 
 JSObject* gjs_byte_array_from_data(JSContext* cx, size_t nbytes, void* data) {
-    JS::RootedObject array_buffer(
-        cx, JS_NewArrayBufferWithContents(cx, nbytes, g_memdup(data, nbytes)));
+    JS::RootedObject array_buffer(cx);
+    // a null data pointer takes precedence over whatever `nbytes` says
+    if (data)
+        array_buffer = JS_NewArrayBufferWithContents(cx, nbytes, 
g_memdup(data, nbytes));
+    else
+        array_buffer = JS_NewArrayBuffer(cx, 0);
     if (!array_buffer)
         return nullptr;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gjs-1.54.2/gjs/engine.cpp 
new/gjs-1.54.3/gjs/engine.cpp
--- old/gjs-1.54.2/gjs/engine.cpp       2018-10-22 16:10:59.000000000 +0200
+++ new/gjs-1.54.3/gjs/engine.cpp       2018-11-12 18:03:47.000000000 +0100
@@ -162,7 +162,7 @@
      code, so we can probably rely on this behavior.
   */
 
-  if (status == JSFINALIZE_GROUP_START)
+  if (status == JSFINALIZE_GROUP_PREPARE)
         _gjs_context_set_sweeping(js_context, true);
   else if (status == JSFINALIZE_GROUP_END)
         _gjs_context_set_sweeping(js_context, false);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gjs-1.54.2/gjs/jsapi-util-string.cpp 
new/gjs-1.54.3/gjs/jsapi-util-string.cpp
--- old/gjs-1.54.2/gjs/jsapi-util-string.cpp    2018-10-22 16:10:59.000000000 
+0200
+++ new/gjs-1.54.3/gjs/jsapi-util-string.cpp    2018-11-12 18:03:55.000000000 
+0100
@@ -278,6 +278,12 @@
                      ssize_t                n_chars,
                      JS::MutableHandleValue value_p)
 {
+    // a null array pointer takes precedence over whatever `n_chars` says
+    if (!ucs4_string) {
+        value_p.setString(JS_GetEmptyString(cx));
+        return true;
+    }
+
     long u16_string_length;
     GError *error = NULL;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gjs-1.54.2/gjs/jsapi-util.h 
new/gjs-1.54.3/gjs/jsapi-util.h
--- old/gjs-1.54.2/gjs/jsapi-util.h     2018-10-22 16:10:59.000000000 +0200
+++ new/gjs-1.54.3/gjs/jsapi-util.h     2018-11-12 18:04:02.000000000 +0100
@@ -86,10 +86,13 @@
 class GjsAutoParam
     : public std::unique_ptr<GParamSpec, decltype(&g_param_spec_unref)> {
     public:
+    struct TakeOwnership {};
+
     GjsAutoParam(GParamSpec* ptr = nullptr)
-        : unique_ptr(ptr, g_param_spec_unref)
-    {
-    }
+        : unique_ptr(ptr, g_param_spec_unref) {}
+
+    GjsAutoParam(GParamSpec* ptr, const TakeOwnership&)
+        : GjsAutoParam(ptr ? g_param_spec_ref(ptr) : nullptr) {}
 
     operator GParamSpec*() { return get(); }
 };
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gjs-1.54.2/installed-tests/extra/gjs.supp 
new/gjs-1.54.3/installed-tests/extra/gjs.supp
--- old/gjs-1.54.2/installed-tests/extra/gjs.supp       2018-10-07 
00:38:34.000000000 +0200
+++ new/gjs-1.54.3/installed-tests/extra/gjs.supp       2018-11-12 
18:04:16.000000000 +0100
@@ -1,35 +1,6 @@
 # Valgrind suppressions file for GJS
 # This is intended to be used in addition to GLib's glib.supp file.
 
-# We leak a small wrapper in GJS for each registered GType.
-
-{
-   gtype-wrapper-new
-   Memcheck:Leak
-   match-leak-kinds: definite
-   fun:_Znwm
-   fun:gjs_gtype_create_gtype_wrapper
-}
-
-{
-   gtype-wrapper-qdata
-   Memcheck:Leak
-   match-leak-kinds: possible
-   ...
-   fun:type_set_qdata_W
-   fun:g_type_set_qdata
-   fun:gjs_gtype_create_gtype_wrapper
-}
-
-{
-   g_type_register_fundamental never freed
-   Memcheck:Leak
-   fun:calloc
-   ...
-   fun:g_type_register_fundamental
-   ...
-}
-
 # SpiderMonkey leaks
 
 {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gjs-1.54.2/installed-tests/extra/lsan.supp 
new/gjs-1.54.3/installed-tests/extra/lsan.supp
--- old/gjs-1.54.2/installed-tests/extra/lsan.supp      2018-10-07 
00:38:34.000000000 +0200
+++ new/gjs-1.54.3/installed-tests/extra/lsan.supp      2018-11-12 
18:04:16.000000000 +0100
@@ -1,9 +1,6 @@
 # SpiderMonkey leaks a mutex for each GC helper thread.
 leak:js::HelperThread::threadLoop
 
-# We leak a small wrapper in GJS for each registered GType.
-leak:gjs_gtype_create_gtype_wrapper
-
 # https://bugs.freedesktop.org/show_bug.cgi?id=105466
 leak:libfontconfig.so.1
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gjs-1.54.2/installed-tests/js/testEverythingEncapsulated.js 
new/gjs-1.54.3/installed-tests/js/testEverythingEncapsulated.js
--- old/gjs-1.54.2/installed-tests/js/testEverythingEncapsulated.js     
2018-10-22 16:10:59.000000000 +0200
+++ new/gjs-1.54.3/installed-tests/js/testEverythingEncapsulated.js     
2018-11-12 17:59:46.000000000 +0100
@@ -234,6 +234,16 @@
         expect(obj.name_conflict).toEqual(42);
         expect(obj.name_conflict instanceof Function).toBeFalsy();
     });
+
+    xit('sets write-only properties', function () {
+        expect(obj.int).not.toEqual(0);
+        obj.write_only = true;
+        expect(obj.int).toEqual(0);
+    });
+
+    it('gives undefined for write-only properties', function () {
+        expect(obj.write_only).not.toBeDefined();
+    });
 });
 
 describe('Introspected function length', function () {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gjs-1.54.2/win32/config.h.win32 
new/gjs-1.54.3/win32/config.h.win32
--- old/gjs-1.54.2/win32/config.h.win32 2018-10-22 16:17:28.000000000 +0200
+++ new/gjs-1.54.3/win32/config.h.win32 2018-11-12 18:17:32.000000000 +0100
@@ -13,7 +13,7 @@
 #define GETTEXT_PACKAGE "gjs"
 
 /* The gjs version as an integer */
-#define GJS_VERSION 15402
+#define GJS_VERSION 15403
 
 /* define if the compiler supports basic C++11 syntax */
 #define HAVE_CXX11 1
@@ -74,7 +74,7 @@
 #define PACKAGE_NAME "gjs"
 
 /* Define to the full name and version of this package. */
-#define PACKAGE_STRING "gjs 1.54.2"
+#define PACKAGE_STRING "gjs 1.54.3"
 
 /* Define to the one symbol short name of this package. */
 #define PACKAGE_TARNAME "gjs"
@@ -83,10 +83,10 @@
 #define PACKAGE_URL ""
 
 /* Define to the version of this package. */
-#define PACKAGE_VERSION "1.54.2"
+#define PACKAGE_VERSION "1.54.3"
 
 /* Define to 1 if you have the ANSI C header files. */
 #define STDC_HEADERS 1
 
 /* Version number of package */
-#define VERSION "1.54.2"
+#define VERSION "1.54.3"


Reply via email to