# HG changeset patch # User Ethan Blanton # Date 1073960146 0 # Node ID fb0eab758560c7788bdf3669044955aa316a0f08 # Parent 35db601609e3d7d91f618356d57046379678bd26 [gaim-migrate @ 8789] Thanks to Ben Herrenschmidt for pointing this out. committer: Tailor Script diff -r 35db601609e3 -r fb0eab758560 src/signals.c --- a/src/signals.c Tue Jan 13 01:45:32 2004 +0000 +++ b/src/signals.c Tue Jan 13 02:15:46 2004 +0000 @@ -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); } }