]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
Tue Nov 20 06:32:08 EST 2007 Pekka Pessi <Pekka.Pessi@nokia.com>
authorMichael Jerris <mike@jerris.com>
Tue, 20 Nov 2007 14:45:37 +0000 (14:45 +0000)
committerMichael Jerris <mike@jerris.com>
Tue, 20 Nov 2007 14:45:37 +0000 (14:45 +0000)
  * su_tagarg.h: call va_copy() before calling tl_vlist()

  Looks like Solaris on amd64 is not happy with normal va_start()/va_end() use
  of va_lists.

  Thanks for Michael Jerris for reporting the problem.

git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@6359 d0543943-73ff-0310-b7d9-9358b9ac24b2

libs/sofia-sip/libsofia-sip-ua/su/sofia-sip/su_tagarg.h

index ea5b3bcc0b21a3703c5d712b33e85005ec076a17..6c7fec515036ac597ff139c2fd5a1bddfc17baa4 100644 (file)
@@ -142,8 +142,11 @@ typedef struct {
     if (ta_start__tag != NULL &&                                       \
        ta_start__tag != tag_null &&                                    \
        ta_start__tag != tag_next) {                                    \
+      va_list ta_start__ap;                                            \
+      va_copy(ta_start__ap, (ta).ap);                                  \
       (ta).tl[1].t_tag = tag_next;                                     \
-      (ta).tl[1].t_value = (tag_value_t)tl_vlist((ta).ap);             \
+      (ta).tl[1].t_value = (tag_value_t)tl_vlist(ta_start__ap);                \
+      va_end(ta_start__ap);                                            \
     } else {                                                           \
       (ta).tl[1].t_value = 0; (ta).tl[1].t_value = (tag_value_t)0;     \
     }                                                                  \