parted/parted-1.8.0/memory_allocation.patch : Addition of patch
authorKristoffer Ericson <kristoffer_e1@hotmail.com>
Thu, 11 Jan 2007 19:42:20 +0000 (19:42 +0000)
committerKristoffer Ericson <kristoffer_e1@hotmail.com>
Thu, 11 Jan 2007 19:42:20 +0000 (19:42 +0000)
* Parted doesnt work on ARM when used with glibc 2.5
  This patch although not fixing the issue adds
  some cleanups. Supplied by maintainers.

packages/parted/parted-1.8.0/.mtn2git_empty [new file with mode: 0644]
packages/parted/parted-1.8.0/memory_allocation.patch [new file with mode: 0644]

diff --git a/packages/parted/parted-1.8.0/.mtn2git_empty b/packages/parted/parted-1.8.0/.mtn2git_empty
new file mode 100644 (file)
index 0000000..e69de29
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 (file)
index 0000000..ba37096
--- /dev/null
@@ -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 ();