uClibc: add a patch to reduce vasprintf allocation size (fixes #13024)
Signed-off-by: Felix Fietkau <nbd@openwrt.org> SVN-Revision: 40774
This commit is contained in:
parent
bb240b50b6
commit
171211c29f
1 changed files with 37 additions and 0 deletions
|
@ -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. */
|
Loading…
Reference in a new issue