diff options
author | Martin Willi <martin@strongswan.org> | 2008-07-21 14:23:43 +0000 |
---|---|---|
committer | Martin Willi <martin@strongswan.org> | 2008-07-21 14:23:43 +0000 |
commit | ee93541783f938d6fcebe14b08129dff642d2028 (patch) | |
tree | 419416c7e1bb5c444288fd14e81dcf4979fd513c | |
parent | fb34475b5c175284b379e5616337ba0d42a25360 (diff) | |
download | strongswan-ee93541783f938d6fcebe14b08129dff642d2028.tar.bz2 strongswan-ee93541783f938d6fcebe14b08129dff642d2028.tar.xz |
fixed bus args copy on non i386 archs
-rw-r--r-- | src/charon/bus/bus.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/charon/bus/bus.c b/src/charon/bus/bus.c index 1f51045f3..c0803874d 100644 --- a/src/charon/bus/bus.c +++ b/src/charon/bus/bus.c @@ -284,13 +284,16 @@ typedef struct { */ static bool signal_cb(entry_t *entry, signal_data_t *data) { + va_list args; + if (entry->calling) { /* avoid recursive calls */ return FALSE; } entry->calling = TRUE; + va_copy(args, data->args); if (!entry->listener->signal(entry->listener, data->signal, data->level, - data->thread, data->ike_sa, data->user, data->format, data->args)) + data->thread, data->ike_sa, data->user, data->format, args)) { if (entry->blocker) { @@ -301,9 +304,11 @@ static bool signal_cb(entry_t *entry, signal_data_t *data) { entry_destroy(entry); } + va_end(args); entry->calling = FALSE; return TRUE; } + va_end(args); entry->calling = FALSE; return FALSE; } |