1
0
mirror of https://git.FreeBSD.org/ports.git synced 2025-02-08 12:01:56 +00:00

Add a better patch to fix the va_list problem.

Obtained from:	http://bugzilla.gnome.org/show_bug.cgi?id=116131
This commit is contained in:
Joe Marcus Clarke 2003-07-02 21:36:54 +00:00
parent 104f4e8e71
commit 2e8cdd9861
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=84078

View File

@ -1,21 +1,67 @@
--- lib/ephy-node.c.orig Mon Jun 9 19:02:09 2003
+++ lib/ephy-node.c Sun Jun 29 02:01:59 2003
@@ -115,12 +115,16 @@
Index: lib/ephy-node.c
===================================================================
RCS file: /cvs/gnome/epiphany/lib/ephy-node.c,v
retrieving revision 1.19
diff -u -p -r1.19 ephy-node.c
--- lib/ephy-node.c 9 Jun 2003 13:06:19 -0000 1.19
+++ lib/ephy-node.c 28 Jun 2003 22:46:29 -0000
@@ -64,6 +64,12 @@ struct EphyNode
EphyNodeDb *db;
};
+typedef struct
+{
+ EphyNodeSignalType type;
+ va_list valist;
+} ENESCData;
+
/* evillish hacks to temporarily readlock->writelock and v.v. */
static inline void
write_lock_to_read_lock (EphyNode *node)
@@ -113,14 +119,16 @@ int_hash (gconstpointer a)
}
static void
callback (long id, EphyNodeSignalData *data, gpointer *user_data)
-callback (long id, EphyNodeSignalData *data, gpointer *user_data)
+callback (long id, EphyNodeSignalData *data, gpointer *dummy)
{
- va_list valist;
- EphyNodeSignalType type = GPOINTER_TO_INT (user_data[1]);
+ ENESCData *user_data;
+ va_list valist;
EphyNodeSignalType type = GPOINTER_TO_INT (user_data[1]);
if (data->type != type) return;
- if (data->type != type) return;
+ user_data = (ENESCData *) dummy;
- va_copy(valist, user_data[0]);
+#if __FreeBSD_version >= 500040
+ va_copy(valist, user_data[0]);
+#else
+ valist = (va_list) user_data[0];
+#endif
+ valist = user_data->valist;
+
+ if (data->type != user_data->type) return;
switch (data->type)
{
@@ -155,18 +163,17 @@ callback (long id, EphyNodeSignalData *d
static void
ephy_node_emit_signal (EphyNode *node, EphyNodeSignalType type, ...)
{
- va_list valist;
- gpointer data[2];
+ ENESCData data;
+
+ va_start (data.valist, type);
- va_start (valist, type);
+ data.type = type;
- data[0] = (gpointer)valist;
- data[1] = GINT_TO_POINTER (type);
g_hash_table_foreach (node->signals,
(GHFunc) callback,
- data);
+ &data);
- va_end (valist);
+ va_end (data.valist);
}
static void