From 171211c29faf7f7755a4e4f70cb700588e8011db Mon Sep 17 00:00:00 2001
From: Felix Fietkau <nbd@openwrt.org>
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 <nbd@openwrt.org>

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 <nbd@openwrt.org>
+
+--- 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. */
-- 
2.30.2