rpms/dbus-glib/F-8 dbus-glib-0.74-fix-call-cancel-on-proxy-dispose.patch, NONE, 1.1 dbus-glib-0.74-freeze-abi.patch, NONE, 1.1 dbus-glib-0.74-leak-fix.patch, NONE, 1.1 dbus-glib.spec, 1.21, 1.22

Daniel Williams (dcbw) fedora-extras-commits at redhat.com
Tue May 27 15:31:52 UTC 2008


Author: dcbw

Update of /cvs/extras/rpms/dbus-glib/F-8
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv15412

Modified Files:
	dbus-glib.spec 
Added Files:
	dbus-glib-0.74-fix-call-cancel-on-proxy-dispose.patch 
	dbus-glib-0.74-freeze-abi.patch dbus-glib-0.74-leak-fix.patch 
Log Message:
* Tue May 27 2008 Dan Williams <dcbw at redhat.com> - 0.73-8
- Handle unknown object properties without asserting (fdo #16079)
- Ensure ABI is frozen as it stands now
- Cherry-pick some fixes from upstream git



dbus-glib-0.74-fix-call-cancel-on-proxy-dispose.patch:

--- NEW FILE dbus-glib-0.74-fix-call-cancel-on-proxy-dispose.patch ---
commit 2cf62d7ff7d3a7bc450d0b60bb81a8365ffd310b
Author: Ross Burton <ross at burtonini.com>
Date:   Wed Feb 27 14:19:48 2008 +0000

    Fix pending call cancelling in proxy dispose
    
    The dispose treated the hash values as DBusGProxyCall objects, but they are
    DBusPendingCall (thanks Dafyd Harries).

diff --git a/dbus/dbus-gproxy.c b/dbus/dbus-gproxy.c
index 3d5a0c5..1244151 100644
--- a/dbus/dbus-gproxy.c
+++ b/dbus/dbus-gproxy.c
@@ -1419,13 +1419,14 @@ dbus_g_proxy_class_init (DBusGProxyClass *klass)
                   G_TYPE_NONE, 2, DBUS_TYPE_MESSAGE, G_TYPE_POINTER);
 }
 
-static void
+static gboolean
 cancel_pending_call (gpointer key, gpointer val, gpointer data)
 {
-  DBusGProxyCall *call = key;
-  DBusGProxy *proxy = data;
+  DBusPendingCall *pending = val;
 
-  dbus_g_proxy_cancel_call (proxy, call);
+  dbus_pending_call_cancel (pending);
+
+  return TRUE;
 }
 
 static void
@@ -1440,7 +1441,7 @@ dbus_g_proxy_dispose (GObject *object)
     }
 
   /* Cancel outgoing pending calls */
-  g_hash_table_foreach (priv->pending_calls, cancel_pending_call, proxy);
+  g_hash_table_foreach_remove (priv->pending_calls, cancel_pending_call, NULL);
   g_hash_table_destroy (priv->pending_calls);
   priv->pending_calls = NULL;
 

dbus-glib-0.74-freeze-abi.patch:

--- NEW FILE dbus-glib-0.74-freeze-abi.patch ---
>From 8fe656de630e851bc512bbd7e7a6c18c53aecb61 Mon Sep 17 00:00:00 2001
From: Simon McVittie <simon.mcvittie at collabora.co.uk>
Date: Mon, 14 Apr 2008 12:56:43 +0100
Subject: [PATCH] Freeze error ABI at the ABI used in Fedora 8 and Ubuntu gutsy.

This avoids getting a different ABI depending on the version of libdbus
we're compiled against. fd.o #15430, Debian #476080.
---
 dbus/dbus-glib.h                    |   34 ++++++++++++++++-
 dbus/dbus-gobject.c                 |   72 ++++++++++++++++++++++++++++++++++-
 dbus/make-dbus-glib-error-enum.sh   |   25 +------------
 dbus/make-dbus-glib-error-switch.sh |   29 +-------------
 4 files changed, 106 insertions(+), 54 deletions(-)

diff --git a/dbus/dbus-glib.h b/dbus/dbus-glib.h
index b1084ba..c4049f3 100644
--- a/dbus/dbus-glib.h
+++ b/dbus/dbus-glib.h
@@ -60,7 +60,39 @@ GQuark dbus_g_error_quark (void);
 
 typedef enum
 {
-#include "dbus-glib-error-enum.h" 
+DBUS_GERROR_FAILED,
+DBUS_GERROR_NO_MEMORY,
+DBUS_GERROR_SERVICE_UNKNOWN,
+DBUS_GERROR_NAME_HAS_NO_OWNER,
+DBUS_GERROR_NO_REPLY,
+DBUS_GERROR_IO_ERROR,
+DBUS_GERROR_BAD_ADDRESS,
+DBUS_GERROR_NOT_SUPPORTED,
+DBUS_GERROR_LIMITS_EXCEEDED,
+DBUS_GERROR_ACCESS_DENIED,
+DBUS_GERROR_AUTH_FAILED,
+DBUS_GERROR_NO_SERVER,
+DBUS_GERROR_TIMEOUT,
+DBUS_GERROR_NO_NETWORK,
+DBUS_GERROR_ADDRESS_IN_USE,
+DBUS_GERROR_DISCONNECTED,
+DBUS_GERROR_INVALID_ARGS,
+DBUS_GERROR_FILE_NOT_FOUND,
+DBUS_GERROR_FILE_EXISTS,
+DBUS_GERROR_UNKNOWN_METHOD,
+DBUS_GERROR_TIMED_OUT,
+DBUS_GERROR_MATCH_RULE_NOT_FOUND,
+DBUS_GERROR_MATCH_RULE_INVALID,
+DBUS_GERROR_SPAWN_EXEC_FAILED,
+DBUS_GERROR_SPAWN_FORK_FAILED,
+DBUS_GERROR_SPAWN_CHILD_EXITED,
+DBUS_GERROR_SPAWN_CHILD_SIGNALED,
+DBUS_GERROR_SPAWN_FAILED,
+DBUS_GERROR_UNIX_PROCESS_ID_UNKNOWN,
+DBUS_GERROR_INVALID_SIGNATURE,
+DBUS_GERROR_INVALID_FILE_CONTENT,
+DBUS_GERROR_SELINUX_SECURITY_CONTEXT_UNKNOWN,
+DBUS_GERROR_REMOTE_EXCEPTION
 } DBusGError;
 
 gboolean         dbus_g_error_has_name    (GError      *error,
diff --git a/dbus/dbus-gobject.c b/dbus/dbus-gobject.c
index dae2dac..6596309 100644
--- a/dbus/dbus-gobject.c
+++ b/dbus/dbus-gobject.c
@@ -1668,7 +1668,77 @@ export_signals (DBusGConnection *connection, const GList *info_list, GObject *ob
     }
 }
 
-#include "dbus-glib-error-switch.h"
+static gint
+dbus_error_to_gerror_code (const char *derr)
+{
+  if (0) ; 
+  else if (!strcmp (derr,  DBUS_ERROR_FAILED  )) 
+    return  DBUS_GERROR_FAILED ;
+  else if (!strcmp (derr,  DBUS_ERROR_NO_MEMORY  )) 
+    return  DBUS_GERROR_NO_MEMORY ;
+  else if (!strcmp (derr,  DBUS_ERROR_SERVICE_UNKNOWN  )) 
+    return  DBUS_GERROR_SERVICE_UNKNOWN ;
+  else if (!strcmp (derr,  DBUS_ERROR_NAME_HAS_NO_OWNER  )) 
+    return  DBUS_GERROR_NAME_HAS_NO_OWNER ;
+  else if (!strcmp (derr,  DBUS_ERROR_NO_REPLY  )) 
+    return  DBUS_GERROR_NO_REPLY ;
+  else if (!strcmp (derr,  DBUS_ERROR_IO_ERROR  )) 
+    return  DBUS_GERROR_IO_ERROR ;
+  else if (!strcmp (derr,  DBUS_ERROR_BAD_ADDRESS  )) 
+    return  DBUS_GERROR_BAD_ADDRESS ;
+  else if (!strcmp (derr,  DBUS_ERROR_NOT_SUPPORTED  )) 
+    return  DBUS_GERROR_NOT_SUPPORTED ;
+  else if (!strcmp (derr,  DBUS_ERROR_LIMITS_EXCEEDED  )) 
+    return  DBUS_GERROR_LIMITS_EXCEEDED ;
+  else if (!strcmp (derr,  DBUS_ERROR_ACCESS_DENIED  )) 
+    return  DBUS_GERROR_ACCESS_DENIED ;
+  else if (!strcmp (derr,  DBUS_ERROR_AUTH_FAILED  )) 
+    return  DBUS_GERROR_AUTH_FAILED ;
+  else if (!strcmp (derr,  DBUS_ERROR_NO_SERVER  )) 
+    return  DBUS_GERROR_NO_SERVER ;
+  else if (!strcmp (derr,  DBUS_ERROR_TIMEOUT  )) 
+    return  DBUS_GERROR_TIMEOUT ;
+  else if (!strcmp (derr,  DBUS_ERROR_NO_NETWORK  )) 
+    return  DBUS_GERROR_NO_NETWORK ;
+  else if (!strcmp (derr,  DBUS_ERROR_ADDRESS_IN_USE  )) 
+    return  DBUS_GERROR_ADDRESS_IN_USE ;
+  else if (!strcmp (derr,  DBUS_ERROR_DISCONNECTED  )) 
+    return  DBUS_GERROR_DISCONNECTED ;
+  else if (!strcmp (derr,  DBUS_ERROR_INVALID_ARGS  )) 
+    return  DBUS_GERROR_INVALID_ARGS ;
+  else if (!strcmp (derr,  DBUS_ERROR_FILE_NOT_FOUND  )) 
+    return  DBUS_GERROR_FILE_NOT_FOUND ;
+  else if (!strcmp (derr,  DBUS_ERROR_FILE_EXISTS  )) 
+    return  DBUS_GERROR_FILE_EXISTS ;
+  else if (!strcmp (derr,  DBUS_ERROR_UNKNOWN_METHOD  )) 
+    return  DBUS_GERROR_UNKNOWN_METHOD ;
+  else if (!strcmp (derr,  DBUS_ERROR_TIMED_OUT  )) 
+    return  DBUS_GERROR_TIMED_OUT ;
+  else if (!strcmp (derr,  DBUS_ERROR_MATCH_RULE_NOT_FOUND  )) 
+    return  DBUS_GERROR_MATCH_RULE_NOT_FOUND ;
+  else if (!strcmp (derr,  DBUS_ERROR_MATCH_RULE_INVALID  )) 
+    return  DBUS_GERROR_MATCH_RULE_INVALID ;
+  else if (!strcmp (derr,  DBUS_ERROR_SPAWN_EXEC_FAILED  )) 
+    return  DBUS_GERROR_SPAWN_EXEC_FAILED ;
+  else if (!strcmp (derr,  DBUS_ERROR_SPAWN_FORK_FAILED  )) 
+    return  DBUS_GERROR_SPAWN_FORK_FAILED ;
+  else if (!strcmp (derr,  DBUS_ERROR_SPAWN_CHILD_EXITED  )) 
+    return  DBUS_GERROR_SPAWN_CHILD_EXITED ;
+  else if (!strcmp (derr,  DBUS_ERROR_SPAWN_CHILD_SIGNALED  )) 
+    return  DBUS_GERROR_SPAWN_CHILD_SIGNALED ;
+  else if (!strcmp (derr,  DBUS_ERROR_SPAWN_FAILED  )) 
+    return  DBUS_GERROR_SPAWN_FAILED ;
+  else if (!strcmp (derr,  DBUS_ERROR_UNIX_PROCESS_ID_UNKNOWN  )) 
+    return  DBUS_GERROR_UNIX_PROCESS_ID_UNKNOWN ;
+  else if (!strcmp (derr,  DBUS_ERROR_INVALID_SIGNATURE  )) 
+    return  DBUS_GERROR_INVALID_SIGNATURE ;
+  else if (!strcmp (derr,  DBUS_ERROR_INVALID_FILE_CONTENT  )) 
+    return  DBUS_GERROR_INVALID_FILE_CONTENT ;
+  else if (!strcmp (derr,  DBUS_ERROR_SELINUX_SECURITY_CONTEXT_UNKNOWN  )) 
+    return  DBUS_GERROR_SELINUX_SECURITY_CONTEXT_UNKNOWN ;
+  else
+    return DBUS_GERROR_REMOTE_EXCEPTION;
+}
 
 /**
  * dbus_set_g_error:
diff --git a/dbus/make-dbus-glib-error-enum.sh b/dbus/make-dbus-glib-error-enum.sh
index 1646333..1d7929a 100755
--- a/dbus/make-dbus-glib-error-enum.sh
+++ b/dbus/make-dbus-glib-error-enum.sh
@@ -1,25 +1,2 @@
 #!/bin/sh
-
-SRC=$1
-DEST=$2
-
-die()
-{
-    echo $1 1>&2
-    /bin/rm $DEST.tmp
-    exit 1
-}
-
-cat $SRC | grep '#define DBUS_ERROR' | sed -e 's/#define //g' | \
-  sed -e 's/".*//g' | sed -e 's/DBUS_ERROR/DBUS_GERROR/g' | sed -e 's/ *$/,/g' > $DEST.tmp
-
-if test ! -s $DEST.tmp ; then
-    die "$DEST.tmp is empty, something went wrong, see any preceding error message"
-fi
-echo "DBUS_GERROR_REMOTE_EXCEPTION" >> $DEST.tmp
-
-echo "#ifndef DBUS_INSIDE_DBUS_GLIB_H" >> $DEST.tmp
-echo '#error "' "$DEST" 'may only be included by dbus-glib.h"' >> $DEST.tmp
-echo "#endif" >> $DEST.tmp
-
-mv $DEST.tmp $DEST || die "could not move $DEST.tmp to $DEST"
+echo "#error This header makes no sense - see bugs.freedesktop.org 15430" >$2
diff --git a/dbus/make-dbus-glib-error-switch.sh b/dbus/make-dbus-glib-error-switch.sh
index 602cf99..1d7929a 100755
--- a/dbus/make-dbus-glib-error-switch.sh
+++ b/dbus/make-dbus-glib-error-switch.sh
@@ -1,29 +1,2 @@
 #!/bin/sh
-
-SRC=$1
-DEST=$2
-
-die()
-{
-    echo $1 1>&2
-    /bin/rm $DEST.tmp
-    exit 1
-}
-
-echo 'static gint' > $DEST.tmp
-echo 'dbus_error_to_gerror_code (const char *derr)' >> $DEST.tmp
-echo '{' >> $DEST.tmp
-echo '  if (0) ; ' >> $DEST.tmp
-
-cat $SRC | grep '#define DBUS_ERROR' | sed -e 's/#define //g' | \
-  sed -e 's/".*//g' | \
-   (while read line; do \
-     echo '  else if (!strcmp (derr, ' "$line" ' )) '; \
-     echo '    return ' `echo $line | sed -e 's/DBUS_ERROR/DBUS_GERROR/g'` ';'; \
-    done; \
-   ) >> $DEST.tmp
-echo '  else' >> $DEST.tmp
-echo '    return DBUS_GERROR_REMOTE_EXCEPTION;' >> $DEST.tmp
-echo '}' >> $DEST.tmp
-
-mv $DEST.tmp $DEST || die "could not move $DEST.tmp to $DEST"
+echo "#error This header makes no sense - see bugs.freedesktop.org 15430" >$2
-- 
1.5.5


dbus-glib-0.74-leak-fix.patch:

--- NEW FILE dbus-glib-0.74-leak-fix.patch ---
commit 8e024ae2252e6e948c28203f07aa416df3dac0b8
Author: Ross Burton <ross at burtonini.com>
Date:   Wed Feb 27 14:02:36 2008 +0000

    Unref the connection and message on dbus_g_return_error

diff --git a/dbus/dbus-gobject.c b/dbus/dbus-gobject.c
index df26e3b..17855bf 100644
--- a/dbus/dbus-gobject.c
+++ b/dbus/dbus-gobject.c
@@ -2073,6 +2073,9 @@ dbus_g_method_return_error (DBusGMethodInvocation *context, GError *error)
   reply = gerror_to_dbus_error_message (context->object, dbus_g_message_get_message (context->message), error);
   dbus_connection_send (dbus_g_connection_get_connection (context->connection), reply, NULL);
   dbus_message_unref (reply);
+  
+  dbus_g_connection_unref (context->connection);
+  dbus_g_message_unref (context->message);
   g_free (context);
 }
 


Index: dbus-glib.spec
===================================================================
RCS file: /cvs/extras/rpms/dbus-glib/F-8/dbus-glib.spec,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -r1.21 -r1.22
--- dbus-glib.spec	19 Mar 2008 16:03:41 -0000	1.21
+++ dbus-glib.spec	27 May 2008 15:31:02 -0000	1.22
@@ -8,7 +8,7 @@
 Summary: GLib bindings for D-Bus
 Name: dbus-glib
 Version: 0.73
-Release: 7%{?dist}
+Release: 8%{?dist}
 URL: http://www.freedesktop.org/software/dbus/
 Source0: http://dbus.freedesktop.org/releases/dbus-glib/%{name}-%{version}.tar.gz
 Source1: dbus-bus-introspect.xml
@@ -16,6 +16,12 @@
 Patch1: dbus-glib-proxy-signals-once.patch
 # https://bugs.freedesktop.org/show_bug.cgi?id=14429
 Patch2: dbus-glib-0.73-ignore-namespaces-and-children.patch
+# http://bugs.freedesktop.org/show_bug.cgi?id=15430
+Patch3: dbus-glib-0.74-freeze-abi.patch
+# Upstream; 8e024ae2252e6e948c28203f07aa416df3dac0b8
+Patch4: dbus-glib-0.74-leak-fix.patch
+# Upstream; 2cf62d7ff7d3a7bc450d0b60bb81a8365ffd310b
+Patch5: dbus-glib-0.74-fix-call-cancel-on-proxy-dispose.patch
 License: AFL/GPL
 Group: System Environment/Libraries
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
@@ -64,6 +70,9 @@
 %patch0 -p1 -b .broken-xml
 %patch1 -p1 -b .proxy-signals-once
 %patch2 -p1 -b .ignore-namespaces
+%patch3 -p1 -b .freeze-abi
+%patch4 -p1 -b .leak-fix
+%patch5 -p1 -b .fix-call-cancel-on-proxy-dispose
 
 %build
 
@@ -119,6 +128,11 @@
 %endif
 
 %changelog
+* Tue May 27 2008 Dan Williams <dcbw at redhat.com> - 0.73-8
+- Handle unknown object properties without asserting (fdo #16079)
+- Ensure ABI is frozen as it stands now
+- Cherry-pick some fixes from upstream git
+
 * Wed Mar 19 2008 Dan Williams <dcbw at redhat.com> - 0.73-7
 - Ignore children of namespaced nodes too
 




More information about the scm-commits mailing list