Page MenuHomeFreeBSD

D57354.diff
No OneTemporary

D57354.diff

diff --git a/lib/libc/stdio/open_memstream.c b/lib/libc/stdio/open_memstream.c
--- a/lib/libc/stdio/open_memstream.c
+++ b/lib/libc/stdio/open_memstream.c
@@ -46,6 +46,7 @@
struct memstream {
char **bufp;
size_t *sizep;
+ size_t size;
ssize_t len;
fpos_t offset;
};
@@ -60,19 +61,22 @@
newsize = SSIZE_MAX - 1;
else
newsize = newoff;
- if (newsize > ms->len) {
+ if (newsize > ms->size) {
buf = realloc(*ms->bufp, newsize + 1);
if (buf == NULL)
return (0);
#ifdef DEBUG
fprintf(stderr, "MS: %p growing from %zd to %zd\n",
- ms, ms->len, newsize);
+ ms, ms->size, newsize);
#endif
- memset(buf + ms->len + 1, 0, newsize - ms->len);
+ memset(buf + ms->size + 1, 0, newsize - ms->size);
*ms->bufp = buf;
- ms->len = newsize;
+ ms->size = newsize;
}
+
+ if (newsize > ms->len)
+ ms->len = newsize;
return (1);
}
@@ -192,6 +196,7 @@
}
ms->bufp = bufp;
ms->sizep = sizep;
+ ms->size = 0;
ms->len = 0;
ms->offset = 0;
memstream_update(ms);
diff --git a/lib/libc/stdio/open_wmemstream.c b/lib/libc/stdio/open_wmemstream.c
--- a/lib/libc/stdio/open_wmemstream.c
+++ b/lib/libc/stdio/open_wmemstream.c
@@ -46,6 +46,7 @@
struct wmemstream {
wchar_t **bufp;
size_t *sizep;
+ size_t size;
ssize_t len;
fpos_t offset;
mbstate_t mbstate;
@@ -61,18 +62,20 @@
newsize = SSIZE_MAX / sizeof(wchar_t) - 1;
else
newsize = newoff;
- if (newsize > ms->len) {
+ if (newsize > ms->size) {
buf = reallocarray(*ms->bufp, newsize + 1, sizeof(wchar_t));
if (buf == NULL)
return (0);
#ifdef DEBUG
fprintf(stderr, "WMS: %p growing from %zd to %zd\n",
- ms, ms->len, newsize);
+ ms, ms->size, newsize);
#endif
- wmemset(buf + ms->len + 1, 0, newsize - ms->len);
+ wmemset(buf + ms->size + 1, 0, newsize - ms->size);
*ms->bufp = buf;
- ms->len = newsize;
+ ms->size = newsize;
}
+ if (newsize > ms->len)
+ ms->len = newsize;
return (1);
}
@@ -252,6 +255,7 @@
}
ms->bufp = bufp;
ms->sizep = sizep;
+ ms->size = 0;
ms->len = 0;
ms->offset = 0;
memset(&ms->mbstate, 0, sizeof(mbstate_t));

File Metadata

Mime Type
text/plain
Expires
Thu, Oct 8, 2:58 AM (6 h, 42 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
40384545
Default Alt Text
D57354.diff (2 KB)

Event Timeline