comparison src/signals.c @ 8140:47046ceedf0b

[gaim-migrate @ 8846] Thanks to Zaheer Merali for pointing this out ... PPC/AMD64/etc. should be markedly more usable now. ;-) committer: Tailor Script <tailor@pidgin.im>
author Ethan Blanton <elb@pidgin.im>
date Mon, 19 Jan 2004 17:40:02 +0000
parents fb0eab758560
children f2919ca98e78
comparison
equal deleted inserted replaced
8139:d09cb56dcbea 8140:47046ceedf0b
483 GaimInstanceData *instance_data; 483 GaimInstanceData *instance_data;
484 GaimSignalData *signal_data; 484 GaimSignalData *signal_data;
485 GaimSignalHandlerData *handler_data; 485 GaimSignalHandlerData *handler_data;
486 void *ret_val = NULL; 486 void *ret_val = NULL;
487 GList *l, *l_next; 487 GList *l, *l_next;
488 va_list tmp;
488 489
489 g_return_val_if_fail(instance != NULL, NULL); 490 g_return_val_if_fail(instance != NULL, NULL);
490 g_return_val_if_fail(signal != NULL, NULL); 491 g_return_val_if_fail(signal != NULL, NULL);
491 492
492 instance_data = 493 instance_data =
508 { 509 {
509 l_next = l->next; 510 l_next = l->next;
510 511
511 handler_data = (GaimSignalHandlerData *)l->data; 512 handler_data = (GaimSignalHandlerData *)l->data;
512 513
514 va_copy(tmp, args);
513 if (handler_data->use_vargs) 515 if (handler_data->use_vargs)
514 { 516 {
515 ret_val = ((void *(*)(va_list, void *))handler_data->cb)( 517 ret_val = ((void *(*)(va_list, void *))handler_data->cb)(
516 args, handler_data->data); 518 tmp, handler_data->data);
517 } 519 }
518 else 520 else
519 { 521 {
520 signal_data->marshal(handler_data->cb, args, 522 signal_data->marshal(handler_data->cb, tmp,
521 handler_data->data, &ret_val); 523 handler_data->data, &ret_val);
522 } 524 }
525 va_end(tmp);
523 } 526 }
524 527
525 return ret_val; 528 return ret_val;
526 } 529 }
527 530