Hello community, here is the log from the commit of package gjs for openSUSE:Factory checked in at 2017-08-24 18:27:00 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/gjs (Old) and /work/SRC/openSUSE:Factory/.gjs.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gjs" Thu Aug 24 18:27:00 2017 rev:66 rq:517176 version:1.48.6 Changes: -------- --- /work/SRC/openSUSE:Factory/gjs/gjs.changes 2017-06-23 09:15:51.131737011 +0200 +++ /work/SRC/openSUSE:Factory/.gjs.new/gjs.changes 2017-08-24 18:27:01.571855683 +0200 @@ -1,0 +2,7 @@ +Wed Aug 16 08:42:10 UTC 2017 - zai...@opensuse.org + +- Update to version 1.48.6: + + GJS crash in needsPostBarrier, possible access from wrong + thread - more fixes for bgo#783935. + +------------------------------------------------------------------- Old: ---- gjs-1.48.5.tar.xz New: ---- gjs-1.48.6.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ gjs.spec ++++++ --- /var/tmp/diff_new_pack.NCXdZs/_old 2017-08-24 18:27:02.163772289 +0200 +++ /var/tmp/diff_new_pack.NCXdZs/_new 2017-08-24 18:27:02.167771726 +0200 @@ -17,7 +17,7 @@ Name: gjs -Version: 1.48.5 +Version: 1.48.6 Release: 0 # FIXME: find out if tapsets should really be in devel package or in main package Summary: JavaScript bindings based on gobject-introspection and Mozilla ++++++ gjs-1.48.5.tar.xz -> gjs-1.48.6.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gjs-1.48.5/Makefile.in new/gjs-1.48.6/Makefile.in --- old/gjs-1.48.5/Makefile.in 2017-06-21 20:05:28.000000000 +0200 +++ new/gjs-1.48.6/Makefile.in 2017-07-28 01:12:56.000000000 +0200 @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.14.1 from Makefile.am. +# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2013 Free Software Foundation, Inc. +# Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -18,7 +18,17 @@ VPATH = @srcdir@ -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ @@ -82,17 +92,6 @@ host_triplet = @host@ bin_PROGRAMS = gjs-console$(EXEEXT) check_PROGRAMS = gjs-tests$(EXEEXT) minijasmine$(EXEEXT) -DIST_COMMON = $(srcdir)/gjs-srcs.mk $(srcdir)/Makefile-modules.am \ - $(srcdir)/gjs-modules-srcs.mk $(srcdir)/Makefile-examples.am \ - $(srcdir)/Makefile-test.am $(srcdir)/Makefile-insttest.am \ - INSTALL NEWS README AUTHORS ChangeLog $(srcdir)/Makefile.in \ - $(srcdir)/Makefile.am $(top_srcdir)/configure \ - $(am__configure_deps) $(srcdir)/config.h.in \ - $(srcdir)/gjs-1.0.pc.in $(top_srcdir)/win32/config.h.win32.in \ - depcomp $(dist_gjsjs_DATA) \ - $(nobase_gjs_public_include_HEADERS) $(noinst_HEADERS) COPYING \ - compile config.guess config.sub install-sh missing ltmain.sh \ - tap-driver.sh @ENABLE_GTK_TRUE@am__append_1 = $(GJS_GTK_CFLAGS) @ENABLE_GTK_TRUE@am__append_2 = $(GJS_GTK_LIBS) @ENABLE_GTK_TRUE@am__append_3 = $(gjs_gtk_private_srcs) @@ -156,6 +155,10 @@ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ + $(am__configure_deps) $(dist_gjsjs_DATA) \ + $(nobase_gjs_public_include_HEADERS) $(noinst_HEADERS) \ + $(am__DIST_COMMON) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d @@ -651,6 +654,14 @@ am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) TEST_LOGS = $(am__test_logs2:.js.log=.log) JS_LOG_COMPILE = $(JS_LOG_COMPILER) $(AM_JS_LOG_FLAGS) $(JS_LOG_FLAGS) +am__DIST_COMMON = $(srcdir)/Makefile-examples.am \ + $(srcdir)/Makefile-insttest.am $(srcdir)/Makefile-modules.am \ + $(srcdir)/Makefile-test.am $(srcdir)/Makefile.in \ + $(srcdir)/config.h.in $(srcdir)/gjs-1.0.pc.in \ + $(srcdir)/gjs-modules-srcs.mk $(srcdir)/gjs-srcs.mk \ + $(top_srcdir)/win32/config.h.win32.in AUTHORS COPYING \ + ChangeLog INSTALL NEWS README compile config.guess config.sub \ + depcomp install-sh ltmain.sh missing tap-driver.sh DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) @@ -1375,7 +1386,6 @@ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Makefile -.PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ @@ -1385,7 +1395,7 @@ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; -$(srcdir)/gjs-srcs.mk $(srcdir)/Makefile-modules.am $(srcdir)/gjs-modules-srcs.mk $(srcdir)/Makefile-examples.am $(srcdir)/Makefile-test.am $(srcdir)/Makefile-insttest.am: +$(srcdir)/gjs-srcs.mk $(srcdir)/Makefile-modules.am $(srcdir)/gjs-modules-srcs.mk $(srcdir)/Makefile-examples.am $(srcdir)/Makefile-test.am $(srcdir)/Makefile-insttest.am $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck @@ -2821,7 +2831,7 @@ if test -n "$$am__remaking_logs"; then \ echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ "recursion detected" >&2; \ - else \ + elif test -n "$$redo_logs"; then \ am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ fi; \ if $(am__make_dryrun); then :; else \ @@ -3023,15 +3033,15 @@ $(am__post_remove_distdir) dist-tarZ: distdir - @echo WARNING: "Support for shar distribution archives is" \ - "deprecated." >&2 + @echo WARNING: "Support for distribution archives compressed with" \ + "legacy program 'compress' is deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__post_remove_distdir) dist-shar: distdir - @echo WARNING: "Support for distribution archives compressed with" \ - "legacy program 'compress' is deprecated." >&2 + @echo WARNING: "Support for shar distribution archives is" \ + "deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz $(am__post_remove_distdir) @@ -3067,17 +3077,17 @@ esac chmod -R a-w $(distdir) chmod u+w $(distdir) - mkdir $(distdir)/_build $(distdir)/_inst + mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst chmod a-w $(distdir) test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && am__cwd=`pwd` \ - && $(am__cd) $(distdir)/_build \ - && ../configure \ + && $(am__cd) $(distdir)/_build/sub \ + && ../../configure \ $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ - --srcdir=.. --prefix="$$dc_install_base" \ + --srcdir=../.. --prefix="$$dc_install_base" \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ @@ -3317,6 +3327,8 @@ uninstall-pkgconfigDATA uninstall-pkglibLTLIBRARIES \ uninstall-tapsetDATA uninstall-typelibDATA +.PRECIOUS: Makefile + # http://people.gnome.org/~walters/docs/build-api.txt .buildapi-allow-builddir: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gjs-1.48.5/NEWS new/gjs-1.48.6/NEWS --- old/gjs-1.48.5/NEWS 2017-06-21 20:33:37.000000000 +0200 +++ new/gjs-1.48.6/NEWS 2017-07-28 01:12:30.000000000 +0200 @@ -1,3 +1,11 @@ +Version 1.48.6 +-------------- + +- Closed bugs: + + * GJS crash in needsPostBarrier, possible access from wrong thread [#783935, + Philip Chimento] (again) + Version 1.48.5 -------------- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gjs-1.48.5/aclocal.m4 new/gjs-1.48.6/aclocal.m4 --- old/gjs-1.48.5/aclocal.m4 2017-06-21 20:05:26.000000000 +0200 +++ new/gjs-1.48.6/aclocal.m4 2017-07-28 01:12:54.000000000 +0200 @@ -1,6 +1,6 @@ -# generated automatically by aclocal 1.14.1 -*- Autoconf -*- +# generated automatically by aclocal 1.15 -*- Autoconf -*- -# Copyright (C) 1996-2013 Free Software Foundation, Inc. +# Copyright (C) 1996-2014 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -20,7 +20,7 @@ If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically 'autoreconf'.])]) -# Copyright (C) 2002-2013 Free Software Foundation, Inc. +# Copyright (C) 2002-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -32,10 +32,10 @@ # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], -[am__api_version='1.14' +[am__api_version='1.15' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. -m4_if([$1], [1.14.1], [], +m4_if([$1], [1.15], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) @@ -51,14 +51,14 @@ # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], -[AM_AUTOMAKE_VERSION([1.14.1])dnl +[AM_AUTOMAKE_VERSION([1.15])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- -# Copyright (C) 2001-2013 Free Software Foundation, Inc. +# Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -110,7 +110,7 @@ # AM_COND_IF -*- Autoconf -*- -# Copyright (C) 2008-2013 Free Software Foundation, Inc. +# Copyright (C) 2008-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -147,7 +147,7 @@ # AM_CONDITIONAL -*- Autoconf -*- -# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# Copyright (C) 1997-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -178,7 +178,7 @@ Usually this means the macro was only invoked conditionally.]]) fi])]) -# Copyright (C) 1999-2013 Free Software Foundation, Inc. +# Copyright (C) 1999-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -369,7 +369,7 @@ # Generate code to set up dependency tracking. -*- Autoconf -*- -# Copyright (C) 1999-2013 Free Software Foundation, Inc. +# Copyright (C) 1999-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -445,7 +445,7 @@ # Do all the work for Automake. -*- Autoconf -*- -# Copyright (C) 1996-2013 Free Software Foundation, Inc. +# Copyright (C) 1996-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -535,8 +535,8 @@ # <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html> # <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html> AC_SUBST([mkdir_p], ['$(MKDIR_P)']) -# We need awk for the "check" target. The system "awk" is bad on -# some platforms. +# We need awk for the "check" target (and possibly the TAP driver). The +# system "awk" is bad on some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl @@ -610,6 +610,9 @@ AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) fi fi +dnl The trailing newline in this macro's definition is deliberate, for +dnl backward compatibility and to allow trailing 'dnl'-style comments +dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. ]) dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not @@ -639,7 +642,7 @@ done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) -# Copyright (C) 2001-2013 Free Software Foundation, Inc. +# Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -650,7 +653,7 @@ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -if test x"${install_sh}" != xset; then +if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; @@ -660,7 +663,7 @@ fi AC_SUBST([install_sh])]) -# Copyright (C) 2003-2013 Free Software Foundation, Inc. +# Copyright (C) 2003-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -682,7 +685,7 @@ # Add --enable-maintainer-mode option to configure. -*- Autoconf -*- # From Jim Meyering -# Copyright (C) 1996-2013 Free Software Foundation, Inc. +# Copyright (C) 1996-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -717,7 +720,7 @@ # Check to see how 'make' treats includes. -*- Autoconf -*- -# Copyright (C) 2001-2013 Free Software Foundation, Inc. +# Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -767,7 +770,7 @@ # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- -# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# Copyright (C) 1997-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -806,7 +809,7 @@ # Helper functions for option handling. -*- Autoconf -*- -# Copyright (C) 2001-2013 Free Software Foundation, Inc. +# Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -835,7 +838,7 @@ AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) -# Copyright (C) 1999-2013 Free Software Foundation, Inc. +# Copyright (C) 1999-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -882,7 +885,7 @@ # For backward compatibility. AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) -# Copyright (C) 2001-2013 Free Software Foundation, Inc. +# Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -901,7 +904,7 @@ # Check to make sure that the build environment is sane. -*- Autoconf -*- -# Copyright (C) 1996-2013 Free Software Foundation, Inc. +# Copyright (C) 1996-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -982,7 +985,7 @@ rm -f conftest.file ]) -# Copyright (C) 2009-2013 Free Software Foundation, Inc. +# Copyright (C) 2009-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1042,7 +1045,7 @@ _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ]) -# Copyright (C) 2001-2013 Free Software Foundation, Inc. +# Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1070,7 +1073,7 @@ INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) -# Copyright (C) 2006-2013 Free Software Foundation, Inc. +# Copyright (C) 2006-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1089,7 +1092,7 @@ # Check how to create a tarball. -*- Autoconf -*- -# Copyright (C) 2004-2013 Free Software Foundation, Inc. +# Copyright (C) 2004-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gjs-1.48.5/configure new/gjs-1.48.6/configure --- old/gjs-1.48.5/configure 2017-06-21 20:05:27.000000000 +0200 +++ new/gjs-1.48.6/configure 2017-07-28 01:12:55.000000000 +0200 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for gjs 1.48.5. +# Generated by GNU Autoconf 2.69 for gjs 1.48.6. # # 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.48.5' -PACKAGE_STRING='gjs 1.48.5' +PACKAGE_VERSION='1.48.6' +PACKAGE_STRING='gjs 1.48.6' PACKAGE_BUGREPORT='http://bugzilla.gnome.org/enter_bug.cgi?product=gjs' PACKAGE_URL='https://wiki.gnome.org/Projects/Gjs' @@ -1428,7 +1428,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.48.5 to adapt to many kinds of systems. +\`configure' configures gjs 1.48.6 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1498,7 +1498,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of gjs 1.48.5:";; + short | recursive ) echo "Configuration of gjs 1.48.6:";; esac cat <<\_ACEOF @@ -1663,7 +1663,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -gjs configure 1.48.5 +gjs configure 1.48.6 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2153,7 +2153,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.48.5, which was +It was created by gjs $as_me 1.48.6, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2501,7 +2501,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu -am__api_version='1.14' +am__api_version='1.15' ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do @@ -2722,7 +2722,7 @@ $as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} fi -if test x"${install_sh}" != xset; then +if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; @@ -3016,7 +3016,7 @@ # Define the identity of the package. PACKAGE='gjs' - VERSION='1.48.5' + VERSION='1.48.6' cat >>confdefs.h <<_ACEOF @@ -3050,8 +3050,8 @@ # <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html> mkdir_p='$(MKDIR_P)' -# We need awk for the "check" target. The system "awk" is bad on -# some platforms. +# We need awk for the "check" target (and possibly the TAP driver). The +# system "awk" is bad on some platforms. # Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AMTAR='$${TAR-tar}' @@ -3243,10 +3243,10 @@ -GJS_VERSION=14805 +GJS_VERSION=14806 -$as_echo "#define GJS_VERSION (1 * 100 + 48) * 100 + 5" >>confdefs.h +$as_echo "#define GJS_VERSION (1 * 100 + 48) * 100 + 6" >>confdefs.h GETTEXT_PACKAGE=gjs @@ -20547,7 +20547,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.48.5, which was +This file was extended by gjs $as_me 1.48.6, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -20618,7 +20618,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.48.5 +gjs config.status 1.48.6 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.48.5/configure.ac new/gjs-1.48.6/configure.ac --- old/gjs-1.48.5/configure.ac 2017-06-21 20:03:50.000000000 +0200 +++ new/gjs-1.48.6/configure.ac 2017-07-28 01:10:28.000000000 +0200 @@ -3,7 +3,7 @@ m4_define(pkg_major_version, 1) m4_define(pkg_minor_version, 48) -m4_define(pkg_micro_version, 5) +m4_define(pkg_micro_version, 6) 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.48.5/depcomp new/gjs-1.48.6/depcomp --- old/gjs-1.48.5/depcomp 2017-06-21 20:05:28.000000000 +0200 +++ new/gjs-1.48.6/depcomp 2017-07-28 01:12:55.000000000 +0200 @@ -3,7 +3,7 @@ scriptversion=2013-05-30.07; # UTC -# Copyright (C) 1999-2013 Free Software Foundation, Inc. +# Copyright (C) 1999-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gjs-1.48.5/gi/object.cpp new/gjs-1.48.6/gi/object.cpp --- old/gjs-1.48.5/gi/object.cpp 2017-06-21 20:03:50.000000000 +0200 +++ new/gjs-1.48.6/gi/object.cpp 2017-07-28 01:10:46.000000000 +0200 @@ -24,6 +24,7 @@ #include <config.h> #include <deque> +#include <map> #include <memory> #include <set> #include <stack> @@ -64,6 +65,7 @@ /* a list of all signal connections, used when tracing */ std::set<ConnectData *> signals; + std::map<ConnectData *, unsigned> pending_invalidations; /* the GObjectClass wrapped by this JS Object (only used for prototypes) */ @@ -78,7 +80,6 @@ struct _ConnectData { ObjectInstance *obj; GClosure *closure; - unsigned idle_invalidate_id; }; typedef enum @@ -1582,6 +1583,7 @@ signal_connection_invalidate_idle(void *user_data) { auto cd = static_cast<ConnectData *>(user_data); + cd->obj->pending_invalidations.erase(cd); cd->obj->signals.erase(cd); g_slice_free(ConnectData, cd); return G_SOURCE_REMOVE; @@ -1592,7 +1594,41 @@ GClosure *closure) { auto cd = static_cast<ConnectData *>(data); - cd->idle_invalidate_id = g_idle_add(signal_connection_invalidate_idle, cd); + std::map<ConnectData *, unsigned>& pending = cd->obj->pending_invalidations; + g_assert(pending.count(cd) == 0); + pending[cd] = g_idle_add(signal_connection_invalidate_idle, cd); +} + +/* This is basically the same as invalidate_all_signals(), but does not defer + * the invalidation to an idle handler. */ +static void +invalidate_all_signals_now(ObjectInstance *priv) +{ + for (auto& iter : priv->pending_invalidations) { + ConnectData *cd = iter.first; + g_source_remove(iter.second); + g_slice_free(ConnectData, cd); + /* Erase element if not already erased */ + priv->signals.erase(cd); + } + priv->pending_invalidations.clear(); + + /* Can't loop directly through the items, since invalidating an item's + * closure might have the effect of removing the item from the set in the + * invalidate notifier. */ + while (!priv->signals.empty()) { + ConnectData *cd = *priv->signals.begin(); + + /* We have to remove the invalidate notifier, which would + * otherwise schedule a new pending invalidation. */ + g_closure_remove_invalidate_notifier(cd->closure, cd, + signal_connection_invalidated); + g_closure_invalidate(cd->closure); + + g_slice_free(ConnectData, cd); + /* Erase element if not already erased */ + priv->signals.erase(cd); + } } static void @@ -1614,37 +1650,22 @@ priv->info ? g_base_info_get_namespace((GIBaseInfo*) priv->info) : "_gjs_private", priv->info ? g_base_info_get_name((GIBaseInfo*) priv->info) : g_type_name(priv->gtype))); + /* We must invalidate all signal connections now, instead of in an idle + * handler, because the object will not exist anymore when we get around to + * the idle function. We originally needed to defer these invalidations to + * an idle function since the object needs to continue tracing its signal + * connections while GC is going on. However, once the object is finalized, + * it will not be tracing them any longer anyway, so it's safe to do them + * now. + * This applies only to instances, not prototypes, but it's possible that + * an instance's GObject is already freed at this point. */ + invalidate_all_signals_now(priv); + + /* Object is instance, not prototype, AND GObject is not already freed */ if (priv->gobj) { bool had_toggle_up; bool had_toggle_down; - /* We must invalidate all signal connections now, instead of in an idle - * handler, because the object will not exist anymore when we get - * around to the idle function. We originally needed to defer these - * invalidations to an idle function since the object needs to continue - * tracing its signal connections while GC is going on. However, once - * the object is finalized, it will not be tracing them any longer - * anyway, so it's safe to do them now. - * - * This is basically the same as invalidate_all_signals(), but does not - * defer the invalidation to an idle handler. - */ - for (ConnectData *cd : priv->signals) { - /* First remove any pending invalidation, we are doing it now. */ - if (cd->idle_invalidate_id > 0) { - g_source_remove(cd->idle_invalidate_id); - } else { - /* We have to remove the invalidate notifier, which would - * otherwise schedule a new pending invalidation. */ - g_closure_remove_invalidate_notifier(cd->closure, cd, - signal_connection_invalidated); - g_closure_invalidate(cd->closure); - } - - g_slice_free(ConnectData, cd); - } - priv->signals.clear(); - if (G_UNLIKELY (priv->gobj->ref_count <= 0)) { g_error("Finalizing proxy for an already freed object of type: %s.%s\n", priv->info ? g_base_info_get_namespace((GIBaseInfo*) priv->info) : "", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gjs-1.48.5/installed-tests/js/testEverythingEncapsulated.js new/gjs-1.48.6/installed-tests/js/testEverythingEncapsulated.js --- old/gjs-1.48.5/installed-tests/js/testEverythingEncapsulated.js 2017-04-25 01:16:07.000000000 +0200 +++ new/gjs-1.48.6/installed-tests/js/testEverythingEncapsulated.js 2017-07-28 01:10:46.000000000 +0200 @@ -1,4 +1,6 @@ +const GLib = imports.gi.GLib; const Regress = imports.gi.Regress; +const System = imports.system; describe('Introspected structs', function () { let struct; @@ -261,3 +263,18 @@ expect(Regress.TestObj.new_callback.length).toEqual(1); }); }); + +describe('Garbage collection of introspected objects', function () { + // This tests a regression that would very rarely crash, but + // when run under valgrind this code would show use-after-free. + it('collects objects properly with signals connected', function (done) { + function orphanObject() { + let obj = new Regress.TestObj(); + obj.connect('notify', () => {}); + } + + orphanObject(); + System.gc(); + GLib.idle_add(GLib.PRIORITY_LOW, () => done()); + }); +}); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gjs-1.48.5/tap-driver.sh new/gjs-1.48.6/tap-driver.sh --- old/gjs-1.48.5/tap-driver.sh 2017-06-21 20:05:28.000000000 +0200 +++ new/gjs-1.48.6/tap-driver.sh 2017-07-28 01:12:55.000000000 +0200 @@ -1,5 +1,5 @@ #! /bin/sh -# Copyright (C) 2011-2013 Free Software Foundation, Inc. +# Copyright (C) 2011-2014 Free Software Foundation, Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gjs-1.48.5/win32/config.h.win32 new/gjs-1.48.6/win32/config.h.win32 --- old/gjs-1.48.5/win32/config.h.win32 2017-06-21 20:05:35.000000000 +0200 +++ new/gjs-1.48.6/win32/config.h.win32 2017-07-28 01:13:00.000000000 +0200 @@ -13,7 +13,7 @@ #define GETTEXT_PACKAGE "gjs" /* The gjs version as an integer */ -#define GJS_VERSION 14805 +#define GJS_VERSION 14806 /* 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.48.5" +#define PACKAGE_STRING "gjs 1.48.6" /* 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.48.5" +#define PACKAGE_VERSION "1.48.6" /* Define to 1 if you have the ANSI C header files. */ #define STDC_HEADERS 1 /* Version number of package */ -#define VERSION "1.48.5" +#define VERSION "1.48.6"