diff options
author | Luboš Luňák <l.lunak@suse.cz> | 2012-12-01 13:22:21 +0100 |
---|---|---|
committer | Luboš Luňák <l.lunak@suse.cz> | 2012-12-01 13:24:54 +0100 |
commit | 7580038e24b546a5288ab16f8507f73f1c6fd738 (patch) | |
tree | af8a16531378a15ab7a45d2d63ced75c97c6f41e /liblangtag | |
parent | 32c26ffb1f7585318a11f684a9886b58cea5b307 (diff) |
vsnprintf() is not portable
http://perfec.to/vsnprintf/
At least MSVC2010 implementation returns -1 when the result doesn't fit,
so the excepted size is not computed correctly. Let's hope 16k is
big enough for everybody(TM).
Change-Id: I636487c7723651bfa74513018be786a45b6c796d
Diffstat (limited to 'liblangtag')
-rw-r--r-- | liblangtag/UnpackedTarball_langtag.mk | 1 | ||||
-rw-r--r-- | liblangtag/liblangtag-0.4.0-vsnprintf.patch | 30 |
2 files changed, 31 insertions, 0 deletions
diff --git a/liblangtag/UnpackedTarball_langtag.mk b/liblangtag/UnpackedTarball_langtag.mk index 94d04382764c..663d7245f8d3 100644 --- a/liblangtag/UnpackedTarball_langtag.mk +++ b/liblangtag/UnpackedTarball_langtag.mk @@ -32,6 +32,7 @@ $(eval $(call gb_UnpackedTarball_add_patches,langtag,\ liblangtag/liblangtag-0.4.0-windows2.patch \ liblangtag/liblangtag-0.4.0-msvcprojects.patch \ liblangtag/liblangtag-0.4.0-ppc.patch \ + liblangtag/liblangtag-0.4.0-vsnprintf.patch \ )) endif diff --git a/liblangtag/liblangtag-0.4.0-vsnprintf.patch b/liblangtag/liblangtag-0.4.0-vsnprintf.patch new file mode 100644 index 000000000000..09e1987677ec --- /dev/null +++ b/liblangtag/liblangtag-0.4.0-vsnprintf.patch @@ -0,0 +1,30 @@ +--- misc/liblangtag-0.4.0/liblangtag/lt-utils.c 2012-12-01 10:46:26.000000000 +0100 ++++ misc/build/liblangtag-0.4.0/liblangtag/lt-utils.c 2012-12-01 13:17:41.421568551 +0100 +@@ -18,6 +18,7 @@ + #include <stdio.h> + #include <string.h> + #include <memory.h> ++#include <stdlib.h> + #include "lt-messages.h" + #include "lt-utils.h" + +@@ -121,7 +121,7 @@ char * + lt_strdup_vprintf(const char *format, + va_list args) + { +- char *retval, c; ++ char *retval, tmpbuf[ 16384 ]; + va_list ap; + int size; + +@@ -133,7 +133,9 @@ lt_strdup_vprintf(const char *format, + va_copy(ap, args); + #endif + +- size = vsnprintf(&c, 1, format, ap) + 1; ++ size = vsnprintf(tmpbuf, sizeof(tmpbuf), format, ap) + 1; ++ if( size == 0 ) // -1 + 1 ++ abort(); + + va_end(ap); + |