Hello community,

here is the log from the commit of package jsonrpc-glib for openSUSE:Factory 
checked in at 2017-10-06 11:01:32
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/jsonrpc-glib (Old)
 and      /work/SRC/openSUSE:Factory/.jsonrpc-glib.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "jsonrpc-glib"

Fri Oct  6 11:01:32 2017 rev:3 rq:531695 version:3.26.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/jsonrpc-glib/jsonrpc-glib.changes        
2017-09-13 21:53:29.486713494 +0200
+++ /work/SRC/openSUSE:Factory/.jsonrpc-glib.new/jsonrpc-glib.changes   
2017-10-06 11:01:48.772201282 +0200
@@ -1,0 +2,14 @@
+Thu Oct  5 01:41:06 UTC 2017 - [email protected]
+
+- Update to version 3.26.1:
+  + Require -std=gnu11 in project config. We always required this,
+    but previously we were relying on the default GCC flags to do
+    so.
+  + Fix improper use of va_list on non-Intel architectures.
+  + JsonrpcOutputStream now properly checks for pending operations
+    before flushing, so that an error is not incorrectly
+    synthesized.
+  + Improved error propagation from data streams.
+  + Correctness fixes for stress tests.
+
+-------------------------------------------------------------------

Old:
----
  jsonrpc-glib-3.26.0.tar.xz

New:
----
  jsonrpc-glib-3.26.1.tar.xz

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

Other differences:
------------------
++++++ jsonrpc-glib.spec ++++++
--- /var/tmp/diff_new_pack.96cJvm/_old  2017-10-06 11:01:49.256128104 +0200
+++ /var/tmp/diff_new_pack.96cJvm/_new  2017-10-06 11:01:49.260127500 +0200
@@ -18,7 +18,7 @@
 
 %define sover 1_0-0
 Name:           jsonrpc-glib
-Version:        3.26.0
+Version:        3.26.1
 Release:        0
 Summary:        Library to communicate with JSON-RPC based peers
 License:        LGPL-2.1+

++++++ jsonrpc-glib-3.26.0.tar.xz -> jsonrpc-glib-3.26.1.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jsonrpc-glib-3.26.0/NEWS new/jsonrpc-glib-3.26.1/NEWS
--- old/jsonrpc-glib-3.26.0/NEWS        2017-09-11 23:36:47.000000000 +0200
+++ new/jsonrpc-glib-3.26.1/NEWS        2017-10-03 22:20:30.000000000 +0200
@@ -1,4 +1,18 @@
 ==============
+Version 3.26.1
+==============
+
+Changes in this release:
+
+ • Require -std=gnu11 in project config. We always required this, but
+   previously we were relying on the default GCC flags to do so.
+ • Fix improper use of va_list on non-Intel architectures.
+ • JsonrpcOutputStream now properly checks for pending operations before
+   flushing, so that an error is not incorrectly synthesized.
+ • Improved error propagation from data streams.
+ • Correctness fixes for stress tests.
+
+==============
 Version 3.26.0
 ==============
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jsonrpc-glib-3.26.0/meson.build 
new/jsonrpc-glib-3.26.1/meson.build
--- old/jsonrpc-glib-3.26.0/meson.build 2017-09-11 23:36:47.000000000 +0200
+++ new/jsonrpc-glib-3.26.1/meson.build 2017-10-03 22:20:30.000000000 +0200
@@ -1,8 +1,8 @@
 project('jsonrpc-glib', 'c',
-          version: '3.26.0',
+          version: '3.26.1',
           license: 'LGPLv2.1+',
     meson_version: '>= 0.40.1',
-  default_options: [ 'warning_level=1', 'buildtype=debugoptimized' ],
+  default_options: [ 'warning_level=1', 'buildtype=debugoptimized', 
'c_std=gnu11' ],
 )
 
 version_arr = meson.project_version().split('.')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jsonrpc-glib-3.26.0/src/jsonrpc-client.c 
new/jsonrpc-glib-3.26.1/src/jsonrpc-client.c
--- old/jsonrpc-glib-3.26.0/src/jsonrpc-client.c        2017-09-11 
23:36:47.000000000 +0200
+++ new/jsonrpc-glib-3.26.1/src/jsonrpc-client.c        2017-10-03 
22:20:30.000000000 +0200
@@ -1138,7 +1138,7 @@
 {
   JsonrpcClientPrivate *priv = jsonrpc_client_get_instance_private (self);
   g_autoptr(GHashTable) invocations = NULL;
-  g_autoptr(GError) close_error = NULL;
+  gboolean ret;
 
   g_return_val_if_fail (JSONRPC_IS_CLIENT (self), FALSE);
   g_return_val_if_fail (!cancellable || G_IS_CANCELLABLE (cancellable), FALSE);
@@ -1151,8 +1151,10 @@
   if (!g_cancellable_is_cancelled (priv->read_loop_cancellable))
     g_cancellable_cancel (priv->read_loop_cancellable);
 
-  if (!g_io_stream_close (priv->io_stream, cancellable, &close_error))
-    g_warning ("%s", close_error->message);
+  /* This can fail from "pending operations", but we will always cancel
+   * our tasks. But we should let the caller know either way.
+   */
+  ret = g_io_stream_close (priv->io_stream, cancellable, error);
 
   /*
    * Closing the input stream will fail, so just rely on the callback
@@ -1177,7 +1179,7 @@
         g_task_return_error (task, g_error_copy (local_error));
     }
 
-  return TRUE;
+  return ret;
 }
 
 /**
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jsonrpc-glib-3.26.0/src/jsonrpc-message.c 
new/jsonrpc-glib-3.26.1/src/jsonrpc-message.c
--- old/jsonrpc-glib-3.26.0/src/jsonrpc-message.c       2017-09-11 
23:36:47.000000000 +0200
+++ new/jsonrpc-glib-3.26.1/src/jsonrpc-message.c       2017-10-03 
22:20:30.000000000 +0200
@@ -54,21 +54,21 @@
 
 static void     jsonrpc_message_build_object   (GVariantBuilder *builder,
                                                 gpointer         param,
-                                                va_list          args);
+                                                va_list         *args);
 static void     jsonrpc_message_build_array    (GVariantBuilder *builder,
                                                 gpointer         param,
-                                                va_list          args);
+                                                va_list         *args);
 static gboolean jsonrpc_message_parse_object   (GVariantDict    *dict,
                                                 gpointer         param,
-                                                va_list          args);
+                                                va_list         *args);
 static gboolean jsonrpc_message_parse_array_va (GVariantIter    *iter,
                                                 gpointer         param,
-                                                va_list          args);
+                                                va_list         *args);
 
 static void
 jsonrpc_message_build_object (GVariantBuilder *builder,
                               gpointer         param,
-                              va_list          args)
+                              va_list         *args)
 {
   JsonrpcMessageAny *keyptr = param;
   JsonrpcMessageAny *valptr;
@@ -101,7 +101,7 @@
   /*
    * Now try to read the value for the key/val pair.
    */
-  valptr = param = va_arg (args, gpointer);
+  valptr = param = va_arg (*args, gpointer);
 
   g_variant_builder_open (builder, G_VARIANT_TYPE ("v"));
 
@@ -109,14 +109,14 @@
     {
     case '{':
       g_variant_builder_open (builder, G_VARIANT_TYPE ("a{sv}"));
-      param = va_arg (args, gpointer);
+      param = va_arg (*args, gpointer);
       jsonrpc_message_build_object (builder, param, args);
       g_variant_builder_close (builder);
       break;
 
     case '[':
       g_variant_builder_open (builder, G_VARIANT_TYPE ("av"));
-      param = va_arg (args, gpointer);
+      param = va_arg (*args, gpointer);
       jsonrpc_message_build_array (builder, param, args);
       g_variant_builder_close (builder);
       break;
@@ -148,7 +148,7 @@
   /*
    * Try to build the next field in the object if there is one.
    */
-  param = va_arg (args, gpointer);
+  param = va_arg (*args, gpointer);
   jsonrpc_message_build_object (builder, param, args);
 
   EXIT;
@@ -157,7 +157,7 @@
 static void
 jsonrpc_message_build_array (GVariantBuilder *builder,
                              gpointer         param,
-                             va_list          args)
+                             va_list         *args)
 {
   JsonrpcMessageAny *valptr = param;
 
@@ -173,14 +173,14 @@
     {
     case '{':
       g_variant_builder_open (builder, G_VARIANT_TYPE ("a{sv}"));
-      param = va_arg (args, gpointer);
+      param = va_arg (*args, gpointer);
       jsonrpc_message_build_object (builder, param, args);
       g_variant_builder_close (builder);
       break;
 
     case '[':
       g_variant_builder_open (builder, G_VARIANT_TYPE ("av"));
-      param = va_arg (args, gpointer);
+      param = va_arg (*args, gpointer);
       jsonrpc_message_build_array (builder, param, args);
       g_variant_builder_close (builder);
       break;
@@ -208,15 +208,15 @@
 
   g_variant_builder_close (builder);
 
-  param = va_arg (args, gpointer);
+  param = va_arg (*args, gpointer);
   jsonrpc_message_build_array (builder, param, args);
 
   EXIT;
 }
 
 static GVariant *
-jsonrpc_message_new_valist (gpointer first_param,
-                            va_list  args)
+jsonrpc_message_new_valist (gpointer  first_param,
+                            va_list  *args)
 {
   GVariantBuilder builder;
 
@@ -238,16 +238,19 @@
   g_return_val_if_fail (first_param != NULL, NULL);
 
   va_start (args, first_param);
-  ret = jsonrpc_message_new_valist (first_param, args);
+  ret = jsonrpc_message_new_valist (first_param, &args);
   va_end (args);
 
+  if (g_variant_is_floating (ret))
+    g_variant_take_ref (ret);
+
   return ret;
 }
 
 static gboolean
 jsonrpc_message_parse_object (GVariantDict *dict,
                               gpointer      param,
-                              va_list       args)
+                              va_list      *args)
 {
   JsonrpcMessageAny *valptr;
   const char *key = param;
@@ -260,7 +263,7 @@
   if (key == NULL || key[0] == '}')
     RETURN (TRUE);
 
-  valptr = va_arg (args, gpointer);
+  valptr = va_arg (*args, gpointer);
 
   if (valptr == NULL)
     g_error ("got unexpected NULL for key %s", key);
@@ -281,7 +284,7 @@
             ret = !!(*((JsonrpcMessageGetDict *)valptr)->dictptr = 
g_steal_pointer (&subdict));
           else
             {
-              param = va_arg (args, gpointer);
+              param = va_arg (*args, gpointer);
               ret = jsonrpc_message_parse_object (subdict, param, args);
             }
         }
@@ -297,7 +300,7 @@
             ret = !!(*((JsonrpcMessageGetIter *)valptr)->iterptr = 
g_steal_pointer (&subiter));
           else
             {
-              param = va_arg (args, gpointer);
+              param = va_arg (*args, gpointer);
               ret = jsonrpc_message_parse_array_va (subiter, param, args);
             }
         }
@@ -330,7 +333,7 @@
     RETURN (ret);
 
   /* If we succeeded, try to read the next field */
-  param = va_arg (args, gpointer);
+  param = va_arg (*args, gpointer);
   ret = jsonrpc_message_parse_object (dict, param, args);
 
   RETURN (ret);
@@ -339,7 +342,7 @@
 static gboolean
 jsonrpc_message_parse_array_va (GVariantIter *iter,
                                 gpointer      param,
-                                va_list       args)
+                                va_list      *args)
 {
   JsonrpcMessageAny *valptr = param;
   g_autoptr(GVariant) value = NULL;
@@ -367,7 +370,7 @@
             ret = !!(*((JsonrpcMessageGetDict *)valptr)->dictptr = 
g_steal_pointer (&subdict));
           else
             {
-              param = va_arg (args, gpointer);
+              param = va_arg (*args, gpointer);
               ret = jsonrpc_message_parse_object (subdict, param, args);
             }
         }
@@ -384,7 +387,7 @@
             ret = !!(*((JsonrpcMessageGetIter *)valptr)->iterptr = 
g_steal_pointer (&subiter));
           else
             {
-              param = va_arg (args, gpointer);
+              param = va_arg (*args, gpointer);
               ret = jsonrpc_message_parse_array_va (subiter, param, args);
             }
         }
@@ -429,14 +432,15 @@
     RETURN (ret);
 
   /* If we succeeded, try to read the next element */
-  param = va_arg (args, gpointer);
+  param = va_arg (*args, gpointer);
   ret = jsonrpc_message_parse_array_va (iter, param, args);
 
   RETURN (ret);
 }
 
 gboolean
-jsonrpc_message_parse_array (GVariantIter *iter, ...)
+jsonrpc_message_parse_array (GVariantIter *iter,
+                             ...)
 {
   va_list args;
   gpointer param;
@@ -447,7 +451,7 @@
   va_start (args, iter);
   param = va_arg (args, gpointer);
   if (param)
-    ret = jsonrpc_message_parse_array_va (iter, param, args);
+    ret = jsonrpc_message_parse_array_va (iter, param, &args);
   va_end (args);
 
   return ret;
@@ -455,7 +459,7 @@
 
 static gboolean
 jsonrpc_message_parse_valist (GVariant *message,
-                              va_list   args)
+                              va_list  *args)
 {
   gpointer param;
   gboolean ret = FALSE;
@@ -463,7 +467,7 @@
   g_assert (message != NULL);
   g_assert (g_variant_is_of_type (message, G_VARIANT_TYPE ("a{sv}")));
 
-  param = va_arg (args, gpointer);
+  param = va_arg (*args, gpointer);
 
   if (param != NULL)
     {
@@ -478,7 +482,8 @@
 }
 
 gboolean
-jsonrpc_message_parse (GVariant *message, ...)
+jsonrpc_message_parse (GVariant *message,
+                       ...)
 {
   gboolean ret;
   va_list args;
@@ -487,7 +492,7 @@
   g_return_val_if_fail (g_variant_is_of_type (message, G_VARIANT_TYPE 
("a{sv}")), FALSE);
 
   va_start (args, message);
-  ret = jsonrpc_message_parse_valist (message, args);
+  ret = jsonrpc_message_parse_valist (message, &args);
   va_end (args);
 
   return ret;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jsonrpc-glib-3.26.0/src/jsonrpc-output-stream.c 
new/jsonrpc-glib-3.26.1/src/jsonrpc-output-stream.c
--- old/jsonrpc-glib-3.26.0/src/jsonrpc-output-stream.c 2017-09-11 
23:36:47.000000000 +0200
+++ new/jsonrpc-glib-3.26.1/src/jsonrpc-output-stream.c 2017-10-03 
22:20:30.000000000 +0200
@@ -254,7 +254,8 @@
 
   g_assert (JSONRPC_IS_OUTPUT_STREAM (self));
 
-  if (priv->queue.length == 0)
+  if (priv->queue.length == 0 ||
+      g_output_stream_has_pending (G_OUTPUT_STREAM (self)))
     return;
 
   task = g_queue_pop_head (&priv->queue);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jsonrpc-glib-3.26.0/tests/test-stress.c 
new/jsonrpc-glib-3.26.1/tests/test-stress.c
--- old/jsonrpc-glib-3.26.0/tests/test-stress.c 2017-09-11 23:36:47.000000000 
+0200
+++ new/jsonrpc-glib-3.26.1/tests/test-stress.c 2017-10-03 22:20:30.000000000 
+0200
@@ -65,9 +65,10 @@
   if (n_ops == 0)
     {
       LOG ("server: closing client stream");
-      r = jsonrpc_client_close (client, NULL, &error);
-      g_assert_no_error (error);
-      g_assert_cmpint (r, ==, 1);
+      /* Close might error, but the tasks are always
+       * flushed and cancelled.
+       */
+      jsonrpc_client_close (client, NULL, NULL);
     }
 }
 


Reply via email to