瀏覽代碼

uClibc: add a patch to reduce vasprintf allocation size (fixes #13024)

Signed-off-by: Felix Fietkau <[email protected]>

SVN-Revision: 40774
Felix Fietkau 11 年之前
父節點
當前提交
171211c29f
共有 1 個文件被更改,包括 37 次插入0 次删除
  1. 37 0
      toolchain/uClibc/patches-0.9.33.2/150-vasprintf_size_reduce.patch

+ 37 - 0
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 <[email protected]>
+
+--- 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. */