Merge branch 'org.openembedded.dev' of git@git.openembedded.net:openembedded into...
[vuplus_openembedded] / packages / parted / parted-1.8.0 / memory_allocation.patch
1 --- parted-1.8.0/libparted/exception.c_orig     2006-12-11 19:44:23.000000000 +0000
2 +++ parted-1.8.0/libparted/exception.c  2006-12-11 19:47:53.000000000 +0000
3 @@ -231,6 +231,9 @@
4                      PedExceptionOption ex_opts, const char* message, ...)
5  {
6         va_list         arg_list;
7 +        int result;
8 +       static int size = 1000;
9 +
10  
11         if (ex)
12                 ped_exception_catch ();
13 @@ -239,16 +242,22 @@
14         if (!ex)
15                 goto no_memory;
16  
17 -       ex->message = (char*) malloc (8192);
18 -       if (!ex->message)
19 -               goto no_memory;
20 -
21         ex->type = ex_type;
22         ex->options = ex_opts;
23  
24 -       va_start (arg_list, message);
25 -       vsnprintf (ex->message, 8192, message, arg_list);
26 -       va_end (arg_list);
27 +        while (1) {
28 +                   ex->message = (char*) malloc (size);
29 +                   if (!ex->message)
30 +                             goto no_memory;
31 +                   va_start (arg_list, message);
32 +                   result = vsnprintf (ex->message, size, message, arg_list);
33 +                   va_end (arg_list);
34 +                   
35 +                   if (result > -1 && result < size)
36 +                                   break;
37 +                   size += 10;
38 +                 }
39 +                   
40  
41         return do_throw ();
42