From 76e761ad2019ffa8f86d41afc848f271bea4d1e0 Mon Sep 17 00:00:00 2001 From: Christian Persch Date: Wed, 2 Jul 2003 22:12:33 +0000 Subject: Don't try to assign va_list to a gpointer var. Fixes bug #116131. 2003-07-03 Christian Persch * lib/ephy-node.c: (callback), (ephy_node_emit_signal): Don't try to assign va_list to a gpointer var. Fixes bug #116131. --- lib/ephy-node.c | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) (limited to 'lib') diff --git a/lib/ephy-node.c b/lib/ephy-node.c index ed2b20e7b..b9bce2d33 100644 --- a/lib/ephy-node.c +++ b/lib/ephy-node.c @@ -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 *dummy) { - va_list valist; - EphyNodeSignalType type = GPOINTER_TO_INT (user_data[1]); + ENESCData *user_data; + va_list valist; + + user_data = (ENESCData *) dummy; - if (data->type != type) return; + valist = user_data->valist; - va_copy(valist, user_data[0]); + if (data->type != user_data->type) return; switch (data->type) { @@ -155,18 +163,17 @@ callback (long id, EphyNodeSignalData *data, gpointer *user_data) 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 -- cgit v1.2.3