diff options
author | marcus <marcus@FreeBSD.org> | 2003-07-02 21:36:54 +0000 |
---|---|---|
committer | marcus <marcus@FreeBSD.org> | 2003-07-02 21:36:54 +0000 |
commit | c64b410e38c75615a578950e4610552346f1af2c (patch) | |
tree | 40dd09d60019e1124fdeb654870dfe00f5298c61 /www | |
parent | 05eecfde03ec55439cc341b28a464d4572705017 (diff) | |
download | FreeBSD-ports-c64b410e38c75615a578950e4610552346f1af2c.zip FreeBSD-ports-c64b410e38c75615a578950e4610552346f1af2c.tar.gz |
Add a better patch to fix the va_list problem.
Obtained from: http://bugzilla.gnome.org/show_bug.cgi?id=116131
Diffstat (limited to 'www')
-rw-r--r-- | www/epiphany/files/patch-lib_ephy-node.c | 68 |
1 files changed, 57 insertions, 11 deletions
diff --git a/www/epiphany/files/patch-lib_ephy-node.c b/www/epiphany/files/patch-lib_ephy-node.c index 2777286..cbcc45b 100644 --- a/www/epiphany/files/patch-lib_ephy-node.c +++ b/www/epiphany/files/patch-lib_ephy-node.c @@ -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 |