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"
