Hello community,

here is the log from the commit of package glib2 for openSUSE:Factory checked 
in at 2019-09-11 10:20:14
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/glib2 (Old)
 and      /work/SRC/openSUSE:Factory/.glib2.new.7948 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "glib2"

Wed Sep 11 10:20:14 2019 rev:215 rq:728230 version:2.60.7

Changes:
--------
--- /work/SRC/openSUSE:Factory/glib2/glib2.changes      2019-07-31 
14:11:53.594955345 +0200
+++ /work/SRC/openSUSE:Factory/.glib2.new.7948/glib2.changes    2019-09-11 
10:20:16.427511653 +0200
@@ -1,0 +2,9 @@
+Mon Sep  2 17:04:38 UTC 2019 - Bjørn Lie <[email protected]>
+
+- Update to version 2.60.7:
+  + Bugs fixed: glgo#GNOME/GLib#1819, glgo#GNOME/GLib#1847,
+    glgo#GNOME/GLib!1012, glgo#GNOME/GLib!1013,
+    glgo#GNOME/GLib!1061, glgo#GNOME/GLib!1065,
+    glgo#GNOME/GLib!1081.
+
+-------------------------------------------------------------------

Old:
----
  glib-2.60.6.tar.xz

New:
----
  glib-2.60.7.tar.xz

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

Other differences:
------------------
++++++ glib2.spec ++++++
--- /var/tmp/diff_new_pack.7e6pj5/_old  2019-09-11 10:20:16.951511588 +0200
+++ /var/tmp/diff_new_pack.7e6pj5/_new  2019-09-11 10:20:16.955511588 +0200
@@ -19,7 +19,7 @@
 # systemtap is only offered as build-option, but not enabled, as it causes a 
build cycle
 %bcond_with     systemtap
 Name:           glib2
-Version:        2.60.6
+Version:        2.60.7
 Release:        0
 Summary:        General-Purpose Utility Library
 License:        LGPL-2.1-or-later

++++++ glib-2.60.6.tar.xz -> glib-2.60.7.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/glib-2.60.6/NEWS new/glib-2.60.7/NEWS
--- old/glib-2.60.6/NEWS        2019-07-24 12:52:03.000000000 +0200
+++ new/glib-2.60.7/NEWS        2019-09-02 15:28:33.000000000 +0200
@@ -1,3 +1,16 @@
+Overview of changes in GLib 2.60.7
+==================================
+
+* Bugs fixed:
+ - #1819 Invalid characters in Open Location dialog crashes GIMP
+ - #1847 Setting GLIB_VERSION_{MIN_REQUIRED, MAX_ALLOWED} to before 2.56 
triggers warnings
+ - !1012 Backport !1009 “gapplication: remove inactivity_timeout source on 
finalize” to glib-2-60
+ - !1013 Backport !1008 “gmessages: Only use structured logs if 
GLIB_VERSION_MAX_ALLOWED is ≥2.56” to glib-2-60
+ - !1061 Backport !966 “Resolve "Invalid characters in Open Location dialog 
crashes GIMP"” to glib-2-60
+ - !1065 Backport !1040 “GSettingsBackend - Fix thread-safety during 
destruction of GSettings instances...” to glib-2-60
+ - !1081 Backport !1017 “gdatetime: Avoid an assertion failure when parsing 
some ISO 8601 dates” to glib-2-60
+
+
 Overview of changes in GLib 2.60.6
 ==================================
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/glib-2.60.6/gio/gapplication.c 
new/glib-2.60.7/gio/gapplication.c
--- old/glib-2.60.6/gio/gapplication.c  2019-07-24 12:52:03.000000000 +0200
+++ new/glib-2.60.7/gio/gapplication.c  2019-09-02 15:28:33.000000000 +0200
@@ -1372,6 +1372,9 @@
 {
   GApplication *application = G_APPLICATION (object);
 
+  if (application->priv->inactivity_timeout_id)
+    g_source_remove (application->priv->inactivity_timeout_id);
+
   g_slist_free_full (application->priv->option_groups, (GDestroyNotify) 
g_option_group_unref);
   if (application->priv->main_options)
     g_option_group_unref (application->priv->main_options);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/glib-2.60.6/gio/gsettingsbackend.c 
new/glib-2.60.7/gio/gsettingsbackend.c
--- old/glib-2.60.6/gio/gsettingsbackend.c      2019-07-24 12:52:04.000000000 
+0200
+++ new/glib-2.60.7/gio/gsettingsbackend.c      2019-09-02 15:28:34.000000000 
+0200
@@ -122,7 +122,13 @@
 
 struct _GSettingsBackendWatch
 {
-  GObject                       *target;
+  /* Always access the target via the weak reference */
+  GWeakRef                       target;
+  /* The pointer is only for comparison from the weak notify,
+   * at which point the target might already be close to
+   * destroyed. It's not safe to use it for anything anymore
+   * at that point */
+  GObject                       *target_ptr;
   const GSettingsListenerVTable *vtable;
   GMainContext                  *context;
   GSettingsBackendWatch         *next;
@@ -137,7 +143,7 @@
                     gchar            **names);
 
   GMainContext      *context;
-  GWeakRef          *target_ref;
+  GObject           *target;
   GSettingsBackend  *backend;
   gchar             *name;
   gpointer           origin_tag;
@@ -154,11 +160,12 @@
   /* search and remove */
   g_mutex_lock (&backend->priv->lock);
   for (ptr = &backend->priv->watches; *ptr; ptr = &(*ptr)->next)
-    if ((*ptr)->target == where_the_object_was)
+    if ((*ptr)->target_ptr == where_the_object_was)
       {
         GSettingsBackendWatch *tmp = *ptr;
 
         *ptr = tmp->next;
+        g_weak_ref_clear (&tmp->target);
         g_slice_free (GSettingsBackendWatch, tmp);
 
         g_mutex_unlock (&backend->priv->lock);
@@ -208,9 +215,10 @@
    * GSettings object in a thread other than the one that is doing the
    * dispatching is as follows:
    *
-   *  1) hold a thread-safe GWeakRef on the GSettings during an outstanding
+   *  1) hold a strong reference on the GSettings during an outstanding
    *     dispatch.  This ensures that the delivery is always possible while
-   *     the GSettings object is alive.
+   *     the GSettings object is alive, and if this was the last reference
+   *     then it will be dropped from the dispatch thread.
    *
    *  2) hold a weak reference on the GSettings at other times.  This
    *     allows us to receive early notification of pending destruction
@@ -235,7 +243,8 @@
   watch = g_slice_new (GSettingsBackendWatch);
   watch->context = context;
   watch->vtable = vtable;
-  watch->target = target;
+  g_weak_ref_init (&watch->target, target);
+  watch->target_ptr = target;
   g_object_weak_ref (target, g_settings_backend_watch_weak_notify, backend);
 
   /* linked list prepend */
@@ -260,20 +269,14 @@
 g_settings_backend_invoke_closure (gpointer user_data)
 {
   GSettingsBackendClosure *closure = user_data;
-  GObject *target = g_weak_ref_get (closure->target_ref);
 
-  if (target)
-    {
-      closure->function (target, closure->backend, closure->name,
-                         closure->origin_tag, closure->names);
-      g_object_unref (target);
-    }
+  closure->function (closure->target, closure->backend, closure->name,
+                     closure->origin_tag, closure->names);
 
   if (closure->context)
     g_main_context_unref (closure->context);
   g_object_unref (closure->backend);
-  g_weak_ref_clear (closure->target_ref);
-  g_free (closure->target_ref);
+  g_object_unref (closure->target);
   g_strfreev (closure->names);
   g_free (closure->name);
 
@@ -304,14 +307,18 @@
   for (watch = backend->priv->watches; watch; watch = watch->next)
     {
       GSettingsBackendClosure *closure;
+      GObject *target = g_weak_ref_get (&watch->target);
+
+      /* If the target was destroyed in the meantime, just skip it here */
+      if (!target)
+        continue;
 
       closure = g_slice_new (GSettingsBackendClosure);
       closure->context = watch->context;
       if (closure->context)
         g_main_context_ref (closure->context);
       closure->backend = g_object_ref (backend);
-      closure->target_ref = g_new (GWeakRef, 1);
-      g_weak_ref_init (closure->target_ref, watch->target);
+      closure->target = g_steal_pointer (&target);
       closure->function = G_STRUCT_MEMBER (void *, watch->vtable,
                                            function_offset);
       closure->name = g_strdup (name);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/glib-2.60.6/gio/gvfs.c new/glib-2.60.7/gio/gvfs.c
--- old/glib-2.60.6/gio/gvfs.c  2019-07-24 12:52:04.000000000 +0200
+++ new/glib-2.60.7/gio/gvfs.c  2019-09-02 15:28:34.000000000 +0200
@@ -236,7 +236,7 @@
                         const char *uri)
 {
   GVfsClass *class;
-  GFile *ret;
+  GFile *ret = NULL;
  
   g_return_val_if_fail (G_IS_VFS (vfs), NULL);
   g_return_val_if_fail (uri != NULL, NULL);
@@ -244,10 +244,12 @@
   class = G_VFS_GET_CLASS (vfs);
 
   ret = get_file_for_uri_internal (vfs, uri);
-  if (ret)
-    return ret;
+  if (!ret)
+    ret = (* class->get_file_for_uri) (vfs, uri);
 
-  return (* class->get_file_for_uri) (vfs, uri);
+  g_assert (ret != NULL);
+
+  return g_steal_pointer (&ret);
 }
 
 /**
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/glib-2.60.6/gio/win32/gwinhttpfile.c 
new/glib-2.60.7/gio/win32/gwinhttpfile.c
--- old/glib-2.60.6/gio/win32/gwinhttpfile.c    2019-07-24 12:52:04.000000000 
+0200
+++ new/glib-2.60.7/gio/win32/gwinhttpfile.c    2019-09-02 15:28:34.000000000 
+0200
@@ -80,7 +80,7 @@
  * @vfs: GWinHttpVfs to use
  * @uri: URI of the GWinHttpFile to create.
  *
- * Returns: new winhttp #GFile.
+ * Returns: (nullable): new winhttp #GFile, or %NULL if there was an error 
constructing it.
  */
 GFile *
 _g_winhttp_file_new (GWinHttpVfs *vfs,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/glib-2.60.6/gio/win32/gwinhttpvfs.c 
new/glib-2.60.7/gio/win32/gwinhttpvfs.c
--- old/glib-2.60.6/gio/win32/gwinhttpvfs.c     2019-07-24 12:52:04.000000000 
+0200
+++ new/glib-2.60.7/gio/win32/gwinhttpvfs.c     2019-09-02 15:28:34.000000000 
+0200
@@ -165,15 +165,25 @@
 {
   GWinHttpVfs *winhttp_vfs = G_WINHTTP_VFS (vfs);
   int i;
+  GFile *ret = NULL;
 
   /* If it matches one of "our" schemes, handle it */
   for (i = 0; i < G_N_ELEMENTS (winhttp_uri_schemes); i++)
-    if (g_ascii_strncasecmp (uri, winhttp_uri_schemes[i], strlen 
(winhttp_uri_schemes[i])) == 0 &&
-        uri[strlen (winhttp_uri_schemes[i])] == ':')
-      return _g_winhttp_file_new (winhttp_vfs, uri);
+    {
+      if (g_ascii_strncasecmp (uri, winhttp_uri_schemes[i], strlen 
(winhttp_uri_schemes[i])) == 0 &&
+          uri[strlen (winhttp_uri_schemes[i])] == ':')
+        {
+          ret = _g_winhttp_file_new (winhttp_vfs, uri);
+        }
+    }
 
   /* For other URIs fallback to the wrapped GVfs */
-  return g_vfs_get_file_for_uri (winhttp_vfs->wrapped_vfs, uri);
+  if (ret == NULL)
+    ret = g_vfs_get_file_for_uri (winhttp_vfs->wrapped_vfs, uri);
+
+  g_assert (ret != NULL);
+
+  return g_steal_pointer (&ret);
 }
 
 static const gchar * const *
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/glib-2.60.6/glib/gdatetime.c 
new/glib-2.60.7/glib/gdatetime.c
--- old/glib-2.60.6/glib/gdatetime.c    2019-07-24 12:52:04.000000000 +0200
+++ new/glib-2.60.7/glib/gdatetime.c    2019-09-02 15:28:34.000000000 +0200
@@ -1353,8 +1353,14 @@
   tz = g_time_zone_new (text + i);
 
   /* Double-check that the GTimeZone matches our interpretation of the 
timezone.
-   * Failure would indicate a bug either here of in the GTimeZone code. */
-  g_assert (g_time_zone_get_offset (tz, 0) == offset_sign * (offset_hours * 
3600 + offset_minutes * 60));
+   * This can fail because our interpretation is less strict than (for example)
+   * parse_time() in gtimezone.c, which restricts the range of the parsed
+   * integers. */
+  if (g_time_zone_get_offset (tz, 0) != offset_sign * (offset_hours * 3600 + 
offset_minutes * 60))
+    {
+      g_time_zone_unref (tz);
+      return NULL;
+    }
 
   return tz;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/glib-2.60.6/glib/gmessages.h 
new/glib-2.60.7/glib/gmessages.h
--- old/glib-2.60.6/glib/gmessages.h    2019-07-24 12:52:04.000000000 +0200
+++ new/glib-2.60.7/glib/gmessages.h    2019-09-02 15:28:34.000000000 +0200
@@ -296,7 +296,7 @@
 #endif  /* G_LOG_DOMAIN */
 
 #if defined(G_HAVE_ISO_VARARGS) && !G_ANALYZER_ANALYZING
-#ifdef G_LOG_USE_STRUCTURED
+#if defined(G_LOG_USE_STRUCTURED) && GLIB_VERSION_MAX_ALLOWED >= 
GLIB_VERSION_2_56
 #define g_error(...)  G_STMT_START {                                           
 \
                         g_log_structured_standard (G_LOG_DOMAIN, 
G_LOG_LEVEL_ERROR, \
                                                    __FILE__, G_STRINGIFY 
(__LINE__), \
@@ -345,7 +345,7 @@
                                __VA_ARGS__)
 #endif
 #elif defined(G_HAVE_GNUC_VARARGS)  && !G_ANALYZER_ANALYZING
-#ifdef G_LOG_USE_STRUCTURED
+#if defined(G_LOG_USE_STRUCTURED) && GLIB_VERSION_MAX_ALLOWED >= 
GLIB_VERSION_2_56
 #define g_error(format...)   G_STMT_START {                                    
      \
                                g_log_structured_standard (G_LOG_DOMAIN, 
G_LOG_LEVEL_ERROR, \
                                                           __FILE__, 
G_STRINGIFY (__LINE__), \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/glib-2.60.6/glib/tests/gdatetime.c 
new/glib-2.60.7/glib/tests/gdatetime.c
--- old/glib-2.60.6/glib/tests/gdatetime.c      2019-07-24 12:52:04.000000000 
+0200
+++ new/glib-2.60.7/glib/tests/gdatetime.c      2019-09-02 15:28:34.000000000 
+0200
@@ -490,6 +490,9 @@
   dt = g_date_time_new_from_iso8601 ("not a date", NULL);
   g_assert_null (dt);
 
+  dt = g_date_time_new_from_iso8601 (" +55", NULL);
+  g_assert_null (dt);
+
   /* Check common case */
   dt = g_date_time_new_from_iso8601 ("2016-08-24T22:10:42Z", NULL);
   ASSERT_DATE (dt, 2016, 8, 24);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/glib-2.60.6/meson.build new/glib-2.60.7/meson.build
--- old/glib-2.60.6/meson.build 2019-07-24 12:52:04.000000000 +0200
+++ new/glib-2.60.7/meson.build 2019-09-02 15:28:34.000000000 +0200
@@ -1,5 +1,5 @@
 project('glib', 'c', 'cpp',
-  version : '2.60.6',
+  version : '2.60.7',
   meson_version : '>= 0.48.0',
   default_options : [
     'buildtype=debugoptimized',


Reply via email to