dbus ChangeLog,1.450,1.451 configure.in,1.76,1.77

David Zeuthen david@pdx.freedesktop.org
Fri, 05 Mar 2004 06:05:35 -0800


Update of /cvs/dbus/dbus
In directory pdx:/tmp/cvs-serv8744

Modified Files:
	ChangeLog configure.in 
Log Message:
2004-03-01  David Zeuthen  <david@fubar.dk>

	* dbus/dbus-string.c (_dbus_string_append_printf_valist): Fix a
	bug where args were used twice. This bug resulted in a segfault
	on a Debian/PPC system when starting the messagebus daemon. Include
	dbus-sysdeps.h for DBUS_VA_COPY

	* dbus/dbus-sysdeps.h: Define DBUS_VA_COPY if neccessary. From GLib

	* configure.in: Check for va_copy; define DBUS_VA_COPY to the
	appropriate va_copy implementation. From GLib
 	


Index: ChangeLog
===================================================================
RCS file: /cvs/dbus/dbus/ChangeLog,v
retrieving revision 1.450
retrieving revision 1.451
diff -u -d -r1.450 -r1.451
--- a/ChangeLog	24 Feb 2004 19:50:25 -0000	1.450
+++ b/ChangeLog	5 Mar 2004 14:05:33 -0000	1.451
@@ -1,3 +1,15 @@
+2004-03-01  David Zeuthen  <david@fubar.dk>
+
+	* dbus/dbus-string.c (_dbus_string_append_printf_valist): Fix a
+	bug where args were used twice. This bug resulted in a segfault
+	on a Debian/PPC system when starting the messagebus daemon. Include
+	dbus-sysdeps.h for DBUS_VA_COPY
+
+	* dbus/dbus-sysdeps.h: Define DBUS_VA_COPY if neccessary. From GLib
+
+	* configure.in: Check for va_copy; define DBUS_VA_COPY to the
+	appropriate va_copy implementation. From GLib
+ 	
 2004-02-24  Joe Shaw  <joe@ximian.com>
 
 	* bus/services.c (bus_registry_acquire_service): We need to pass

Index: configure.in
===================================================================
RCS file: /cvs/dbus/dbus/configure.in,v
retrieving revision 1.76
retrieving revision 1.77
diff -u -d -r1.76 -r1.77
--- a/configure.in	19 Nov 2003 21:51:09 -0000	1.76
+++ b/configure.in	5 Mar 2004 14:05:33 -0000	1.77
@@ -293,6 +293,82 @@
 ## byte order
 AC_C_BIGENDIAN
 
+
+dnl **********************************
+dnl *** va_copy checks (from GLib) ***
+dnl **********************************
+dnl we currently check for all three va_copy possibilities, so we get
+dnl all results in config.log for bug reports.
+AC_CACHE_CHECK([for an implementation of va_copy()],dbus_cv_va_copy,[
+	AC_LINK_IFELSE([#include <stdarg.h>
+	void f (int i, ...) {
+	va_list args1, args2;
+	va_start (args1, i);
+	va_copy (args2, args1);
+	if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
+	  exit (1);
+	va_end (args1); va_end (args2);
+	}
+	int main() {
+	  f (0, 42);
+	  return 0;
+	}],
+	[dbus_cv_va_copy=yes],
+	[dbus_cv_va_copy=no])
+])
+AC_CACHE_CHECK([for an implementation of __va_copy()],dbus_cv___va_copy,[
+	AC_LINK_IFELSE([#include <stdarg.h>
+	void f (int i, ...) {
+	va_list args1, args2;
+	va_start (args1, i);
+	__va_copy (args2, args1);
+	if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
+	  exit (1);
+	va_end (args1); va_end (args2);
+	}
+	int main() {
+	  f (0, 42);
+	  return 0;
+	}],
+	[dbus_cv___va_copy=yes],
+	[dbus_cv___va_copy=no])
+])
+
+if test "x$dbus_cv_va_copy" = "xyes"; then
+  dbus_va_copy_func=va_copy
+else if test "x$dbus_cv___va_copy" = "xyes"; then
+  dbus_va_copy_func=__va_copy
+fi
+fi
+
+if test -n "$dbus_va_copy_func"; then
+  AC_DEFINE_UNQUOTED(DBUS_VA_COPY,$dbus_va_copy_func,[A 'va_copy' style function])
+fi
+
+AC_CACHE_CHECK([whether va_lists can be copied by value],dbus_cv_va_val_copy,[
+	AC_TRY_RUN([#include <stdarg.h>
+	void f (int i, ...) {
+	va_list args1, args2;
+	va_start (args1, i);
+	args2 = args1;
+	if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
+	  exit (1);
+	va_end (args1); va_end (args2);
+	}
+	int main() {
+	  f (0, 42);
+	  return 0;
+	}],
+	[dbus_cv_va_val_copy=yes],
+	[dbus_cv_va_val_copy=no],
+	[dbus_cv_va_val_copy=yes])
+])
+
+if test "x$dbus_cv_va_val_copy" = "xno"; then
+  AC_DEFINE(DBUS_VA_COPY_AS_ARRAY,1, ['va_lists' cannot be copies as values])
+fi
+
+
 #### Atomic integers (checks by Sebastian Wilhelmi for GLib)
 AC_MSG_CHECKING([whether to use inline assembler routines for atomic integers])
 have_atomic_inc=no