]> git.pld-linux.org Git - packages/ekg.git/blob - ekg-va_copy.patch
- prevents libgadu's segfault on ppc
[packages/ekg.git] / ekg-va_copy.patch
1 --- lib/common.c.orig   Fri Dec 27 00:40:55 2002
2 +++ lib/common.c        Sat Jan 11 23:17:13 2003
3 @@ -42,6 +42,8 @@
4  
5  #ifndef GG_DEBUG_DISABLE
6  
7 +#define va_copy(x...) __va_copy(x)
8 +
9  /*
10   * gg_debug() // funkcja wewnêtrzna
11   *
12 @@ -81,6 +83,7 @@
13          int size = 0;
14         const char *start;
15         char *buf = NULL;
16 +       va_list ap2;
17  
18         start = format; 
19  
20 @@ -92,21 +95,25 @@
21                 size = 128;
22                 do {
23                         size *= 2;
24 +                       va_copy(ap2, ap);
25                         if (!(tmp = realloc(buf, size))) {
26                                 free(buf);
27                                 return NULL;
28                         }
29                         buf = tmp;
30 -                       res = vsnprintf(buf, size, format, ap);
31 +                       res = vsnprintf(buf, size, format, ap2);
32 +                       va_end(ap2);
33                 } while (res == size - 1 || res == -1);
34         }
35  #else
36         {
37                 char tmp[1];
38 +               va_copy(ap2, ap);
39                 
40                 /* libce Solarisa przy buforze NULL zawsze zwracaj± -1, wiêc
41                  * musimy podaæ co¶ istniej±cego jako cel printf()owania. */
42 -               size = vsnprintf(tmp, sizeof(tmp), format, ap);
43 +               size = vsnprintf(tmp, sizeof(tmp), format, ap2);
44 +               va_end(ap2);
45                 if (!(buf = malloc(size + 1)))
46                         return NULL;
47         }
This page took 0.108707 seconds and 4 git commands to generate.