comparison src/signals.c @ 6505:5ca59294698d

[gaim-migrate @ 7021] Fixes signal passing. Arguments in C are pushed in reverse order, so multiple calls to va_arg() in an argument list produce backwards arguments. committer: Tailor Script <tailor@pidgin.im>
author Ethan Blanton <elb@pidgin.im>
date Tue, 19 Aug 2003 19:46:58 +0000
parents e5e8d21bd4d8
children e74e378e86bf
comparison
equal deleted inserted replaced
6504:6467b992baac 6505:5ca59294698d
439 439
440 void 440 void
441 gaim_marshal_VOID__POINTER(GaimCallback cb, va_list args, void *data, 441 gaim_marshal_VOID__POINTER(GaimCallback cb, va_list args, void *data,
442 void **return_val) 442 void **return_val)
443 { 443 {
444 ((void (*)(void *, void *))cb)(va_arg(args, void *), data); 444 void *arg1 = va_arg(args, void *);
445
446 ((void (*)(void *, void *))cb)(arg1, data);
445 } 447 }
446 448
447 void 449 void
448 gaim_marshal_VOID__POINTER_POINTER(GaimCallback cb, va_list args, 450 gaim_marshal_VOID__POINTER_POINTER(GaimCallback cb, va_list args,
449 void *data, void **return_val) 451 void *data, void **return_val)
450 { 452 {
451 ((void (*)(void *, void *, void *))cb)(va_arg(args, void *), 453 void *arg1 = va_arg(args, void *);
452 va_arg(args, void *), 454 void *arg2 = va_arg(args, void *);
453 data); 455
456 ((void (*)(void *, void *, void *))cb)(arg1, arg2, data);
454 } 457 }
455 458
456 void 459 void
457 gaim_marshal_VOID__POINTER_POINTER_UINT(GaimCallback cb, va_list args, 460 gaim_marshal_VOID__POINTER_POINTER_UINT(GaimCallback cb, va_list args,
458 void *data, void **return_val) 461 void *data, void **return_val)
459 { 462 {
460 ((void (*)(void *, void *, guint, void *))cb)(va_arg(args, void *), 463 void *arg1 = va_arg(args, void *);
461 va_arg(args, void *), 464 void *arg2 = va_arg(args, void *);
462 va_arg(args, guint), 465 guint arg3 = va_arg(args, guint);
463 data); 466
467 ((void (*)(void *, void *, guint, void *))cb)(arg1, arg2, arg3, data);
464 } 468 }
465 469
466 void 470 void
467 gaim_marshal_VOID__POINTER_POINTER_POINTER(GaimCallback cb, va_list args, 471 gaim_marshal_VOID__POINTER_POINTER_POINTER(GaimCallback cb, va_list args,
468 void *data, void **return_val) 472 void *data, void **return_val)
469 { 473 {
470 ((void (*)(void *, void *, void *, void *))cb)(va_arg(args, void *), 474 void *arg1 = va_arg(args, void *);
471 va_arg(args, void *), 475 void *arg2 = va_arg(args, void *);
472 va_arg(args, void *), 476 void *arg3 = va_arg(args, void *);
473 data); 477
478 ((void (*)(void *, void *, void *, void *))cb)(arg1, arg2, arg3, data);
474 } 479 }
475 480
476 void 481 void
477 gaim_marshal_VOID__POINTER_POINTER_POINTER_POINTER(GaimCallback cb, 482 gaim_marshal_VOID__POINTER_POINTER_POINTER_POINTER(GaimCallback cb,
478 va_list args, 483 va_list args,
479 void *data, 484 void *data,
480 void **return_val) 485 void **return_val)
481 { 486 {
482 ((void (*)(void *, void *, void *, void *, void *))cb)( 487 void *arg1 = va_arg(args, void *);
483 va_arg(args, void *), va_arg(args, void *), 488 void *arg2 = va_arg(args, void *);
484 va_arg(args, void *), va_arg(args, void *), data); 489 void *arg3 = va_arg(args, void *);
490 void *arg4 = va_arg(args, void *);
491
492 ((void (*)(void *, void *, void *, void *, void *))cb)(arg1, arg2, arg3, arg4, data);
485 } 493 }
486 void 494 void
487 gaim_marshal_VOID__POINTER_POINTER_POINTER_UINT_UINT(GaimCallback cb, 495 gaim_marshal_VOID__POINTER_POINTER_POINTER_UINT_UINT(GaimCallback cb,
488 va_list args, 496 va_list args,
489 void *data, 497 void *data,
490 void **return_val) 498 void **return_val)
491 { 499 {
500 void *arg1 = va_arg(args, void *);
501 void *arg2 = va_arg(args, void *);
502 void *arg3 = va_arg(args, void *);
503 guint arg4 = va_arg(args, guint);
504 guint arg5 = va_arg(args, guint);
505
492 ((void (*)(void *, void *, void *, guint, guint, void *))cb)( 506 ((void (*)(void *, void *, void *, guint, guint, void *))cb)(
493 va_arg(args, void *), va_arg(args, void *), 507 arg1, arg2, arg3, arg4, arg5, data);
494 va_arg(args, void *), va_arg(args, guint),
495 va_arg(args, guint), data);
496 } 508 }
497 509
498 void 510 void
499 gaim_marshal_BOOLEAN__POINTER(GaimCallback cb, va_list args, void *data, 511 gaim_marshal_BOOLEAN__POINTER(GaimCallback cb, va_list args, void *data,
500 void **return_val) 512 void **return_val)
501 { 513 {
502 gboolean ret_val; 514 gboolean ret_val;
503 515 void *arg1 = va_arg(args, void *);
504 ret_val = ((gboolean (*)(void *, void *))cb)(va_arg(args, void *), data); 516
517 ret_val = ((gboolean (*)(void *, void *))cb)(arg1, data);
505 518
506 if (return_val != NULL) 519 if (return_val != NULL)
507 *return_val = GINT_TO_POINTER(ret_val); 520 *return_val = GINT_TO_POINTER(ret_val);
508 } 521 }
509 522
510 void 523 void
511 gaim_marshal_BOOLEAN__POINTER_POINTER(GaimCallback cb, va_list args, 524 gaim_marshal_BOOLEAN__POINTER_POINTER(GaimCallback cb, va_list args,
512 void *data, void **return_val) 525 void *data, void **return_val)
513 { 526 {
514 gboolean ret_val; 527 gboolean ret_val;
515 528 void *arg1 = va_arg(args, void *);
516 ret_val = ((gboolean (*)(void *, void *, void *))cb)(va_arg(args, void *), 529 void *arg2 = va_arg(args, void *);
517 va_arg(args, void *), 530
518 data); 531 ret_val = ((gboolean (*)(void *, void *, void *))cb)(arg1, arg2, data);
519 532
520 if (return_val != NULL) 533 if (return_val != NULL)
521 *return_val = GINT_TO_POINTER(ret_val); 534 *return_val = GINT_TO_POINTER(ret_val);
522 } 535 }
523 536
526 va_list args, 539 va_list args,
527 void *data, 540 void *data,
528 void **return_val) 541 void **return_val)
529 { 542 {
530 gboolean ret_val; 543 gboolean ret_val;
544 void *arg1 = va_arg(args, void *);
545 void *arg2 = va_arg(args, void *);
546 void *arg3 = va_arg(args, void *);
547 guint arg4 = va_arg(args, guint);
531 548
532 ret_val = ((gboolean (*)(void *, void *, void *, guint, void *))cb)( 549 ret_val = ((gboolean (*)(void *, void *, void *, guint, void *))cb)(
533 va_arg(args, void *), va_arg(args, void *), 550 arg1, arg2, arg3, arg4, data);
534 va_arg(args, void *), va_arg(args, guint),
535 data);
536 551
537 if (return_val != NULL) 552 if (return_val != NULL)
538 *return_val = GINT_TO_POINTER(ret_val); 553 *return_val = GINT_TO_POINTER(ret_val);
539 } 554 }
540 555
543 va_list args, 558 va_list args,
544 void *data, 559 void *data,
545 void **return_val) 560 void **return_val)
546 { 561 {
547 gboolean ret_val; 562 gboolean ret_val;
563 void *arg1 = va_arg(args, void *);
564 void *arg2 = va_arg(args, void *);
565 void *arg3 = va_arg(args, void *);
566 void *arg4 = va_arg(args, void *);
548 567
549 ret_val = ((gboolean (*)(void *, void *, void *, void *, void *))cb)( 568 ret_val = ((gboolean (*)(void *, void *, void *, void *, void *))cb)(
550 va_arg(args, void *), va_arg(args, void *), 569 arg1, arg2, arg3, arg4, data);
551 va_arg(args, void *), va_arg(args, void *),
552 data);
553 570
554 if (return_val != NULL) 571 if (return_val != NULL)
555 *return_val = GINT_TO_POINTER(ret_val); 572 *return_val = GINT_TO_POINTER(ret_val);
556 } 573 }
557 574
558 void 575 void
559 gaim_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER_POINTER( 576 gaim_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER_POINTER(
560 GaimCallback cb, va_list args, void *data, void **return_val) 577 GaimCallback cb, va_list args, void *data, void **return_val)
561 { 578 {
562 gboolean ret_val; 579 gboolean ret_val;
580 void *arg1 = va_arg(args, void *);
581 void *arg2 = va_arg(args, void *);
582 void *arg3 = va_arg(args, void *);
583 void *arg4 = va_arg(args, void *);
584 void *arg5 = va_arg(args, void *);
563 585
564 ret_val = 586 ret_val =
565 ((gboolean (*)(void *, void *, void *, void *, void *, void *))cb)( 587 ((gboolean (*)(void *, void *, void *, void *, void *, void *))cb)(
566 va_arg(args, void *), va_arg(args, void *), 588 arg1, arg2, arg3, arg4, arg5, data);
567 va_arg(args, void *), va_arg(args, void *),
568 va_arg(args, void *), data);
569 589
570 if (return_val != NULL) 590 if (return_val != NULL)
571 *return_val = GINT_TO_POINTER(ret_val); 591 *return_val = GINT_TO_POINTER(ret_val);
572 } 592 }