From 171211c29faf7f7755a4e4f70cb700588e8011db Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Sat, 17 May 2014 17:36:08 +0000 Subject: [PATCH] uClibc: add a patch to reduce vasprintf allocation size (fixes #13024) Signed-off-by: Felix Fietkau SVN-Revision: 40774 --- .../150-vasprintf_size_reduce.patch | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 toolchain/uClibc/patches-0.9.33.2/150-vasprintf_size_reduce.patch diff --git a/toolchain/uClibc/patches-0.9.33.2/150-vasprintf_size_reduce.patch b/toolchain/uClibc/patches-0.9.33.2/150-vasprintf_size_reduce.patch new file mode 100644 index 0000000000..7853c1afa0 --- /dev/null +++ b/toolchain/uClibc/patches-0.9.33.2/150-vasprintf_size_reduce.patch @@ -0,0 +1,37 @@ +Reduce the initial buffer size for open_memstream (used by vasprintf), +as most strings are usually smaller than that. +Realloc the buffer after finishing the string to further reduce size. + +Signed-off-by: Felix Fietkau + +--- a/libc/stdio/vasprintf.c ++++ b/libc/stdio/vasprintf.c +@@ -39,6 +39,8 @@ int vasprintf(char **__restrict buf, con + if (rv < 0) { + free(*buf); + *buf = NULL; ++ } else { ++ *buf = realloc(*buf, rv + 1); + } + } + +--- a/libc/stdio/open_memstream.c ++++ b/libc/stdio/open_memstream.c +@@ -17,6 +17,8 @@ + + #define COOKIE ((__oms_cookie *) cookie) + ++#define MEMSTREAM_BUFSIZ 256 ++ + typedef struct { + char *buf; + size_t len; +@@ -134,7 +136,7 @@ FILE *open_memstream(char **__restrict b + register FILE *fp; + + if ((cookie = malloc(sizeof(__oms_cookie))) != NULL) { +- if ((cookie->buf = malloc(cookie->len = BUFSIZ)) == NULL) { ++ if ((cookie->buf = malloc(cookie->len = MEMSTREAM_BUFSIZ)) == NULL) { + goto EXIT_cookie; + } + *cookie->buf = 0; /* Set nul terminator for buffer. */