1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
Index: src/signals.c
===================================================================
RCS file: /cvsroot/gaim/gaim/src/signals.c,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -u -r1.13 -r1.14
--- src/signals.c 10 Jan 2004 04:04:56 -0000 1.13
+++ src/signals.c 13 Jan 2004 02:15:46 -0000 1.14
@@ -415,6 +415,7 @@
GaimSignalData *signal_data;
GaimSignalHandlerData *handler_data;
GList *l, *l_next;
+ va_list tmp;
g_return_if_fail(instance != NULL);
g_return_if_fail(signal != NULL);
@@ -440,16 +441,22 @@
handler_data = (GaimSignalHandlerData *)l->data;
+ /* This is necessary because a va_list may only be
+ * evaluated once */
+ va_copy(tmp, args);
+
if (handler_data->use_vargs)
{
- ((void (*)(va_list, void *))handler_data->cb)(args,
+ ((void (*)(va_list, void *))handler_data->cb)(tmp,
handler_data->data);
}
else
{
- signal_data->marshal(handler_data->cb, args,
+ signal_data->marshal(handler_data->cb, tmp,
handler_data->data, NULL);
}
+
+ va_end(tmp);
}
}
|