The value of tmpResult may be -1 in which case setting
currentBufferSize = -1 leads to an error when trying to
allocate the buffers.

If tmpResult is less than currentBufferSize simply double
currentBufferSize until parsing the flags succeeds.

--- source/tools/pkgdata/pkgdata.cpp	2015-10-08 05:54:02.000000000 +0200
+++ source/tools/pkgdata/pkgdata.cpp	2015-11-29 16:52:09.329794090 +0100
@@ -862,7 +862,10 @@
                     pkgDataFlags[i] = NULL;
                 }
             }
-            currentBufferSize = tmpResult;
+            if (tmpResult > currentBufferSize)
+                currentBufferSize = tmpResult;
+            else
+                currentBufferSize *= 2;
         } else if (U_FAILURE(status)) {
             fprintf(stderr,"Unable to open or read \"%s\" option file. status = %s\n", o->options, u_errorName(status));
             return -1;
