--- /dev/null
+--- 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 ();
+