diff options
Diffstat (limited to 'packages/parted/parted-1.8.0/memory_allocation.patch')
-rw-r--r-- | packages/parted/parted-1.8.0/memory_allocation.patch | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/packages/parted/parted-1.8.0/memory_allocation.patch b/packages/parted/parted-1.8.0/memory_allocation.patch new file mode 100644 index 0000000000..ba3709680b --- /dev/null +++ b/packages/parted/parted-1.8.0/memory_allocation.patch @@ -0,0 +1,42 @@ +--- parted-1.8.0/libparted/exception.c_orig 2006-12-11 19:44:23.000000000 +0000 ++++ parted-1.8.0/libparted/exception.c 2006-12-11 19:47:53.000000000 +0000 +@@ -231,6 +231,9 @@ + PedExceptionOption ex_opts, const char* message, ...) + { + va_list arg_list; ++ int result; ++ static int size = 1000; ++ + + if (ex) + ped_exception_catch (); +@@ -239,16 +242,22 @@ + if (!ex) + goto no_memory; + +- ex->message = (char*) malloc (8192); +- if (!ex->message) +- goto no_memory; +- + ex->type = ex_type; + ex->options = ex_opts; + +- va_start (arg_list, message); +- vsnprintf (ex->message, 8192, message, arg_list); +- va_end (arg_list); ++ while (1) { ++ ex->message = (char*) malloc (size); ++ if (!ex->message) ++ goto no_memory; ++ va_start (arg_list, message); ++ result = vsnprintf (ex->message, size, message, arg_list); ++ va_end (arg_list); ++ ++ if (result > -1 && result < size) ++ break; ++ size += 10; ++ } ++ + + return do_throw (); + |