aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--libio/fmemopen.c6
-rw-r--r--stdio-common/tst-fmemopen2.c4
3 files changed, 12 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index 809fe1807a..17f33774de 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2015-07-16 Adhemerval Zanella <adhemerval.zanella@linaro.org>
+
+ * libio/fmemopen.c (__fmemopen): Fix 'w' openmode with provided
+ buffer.
+ * stdio-common/tst-fmemopen2.c (do_test_with_buffer): Fix typo and
+ fail output information.
+
2015-07-16 Rajalakshmi Srinivasaraghavan <raji@linux.vnet.ibm.com>
* sysdeps/powerpc/powerpc64/multiarch/Makefile: Add strstr-power7
diff --git a/libio/fmemopen.c b/libio/fmemopen.c
index e6e6a49f76..3ab3e8dac4 100644
--- a/libio/fmemopen.c
+++ b/libio/fmemopen.c
@@ -150,7 +150,7 @@ __fmemopen (void *buf, size_t len, const char *mode)
cookie_io_functions_t iof;
fmemopen_cookie_t *c;
- c = (fmemopen_cookie_t *) malloc (sizeof (fmemopen_cookie_t));
+ c = (fmemopen_cookie_t *) calloc (sizeof (fmemopen_cookie_t), 1);
if (c == NULL)
return NULL;
@@ -165,7 +165,6 @@ __fmemopen (void *buf, size_t len, const char *mode)
return NULL;
}
c->buffer[0] = '\0';
- c->maxpos = 0;
}
else
{
@@ -182,7 +181,8 @@ __fmemopen (void *buf, size_t len, const char *mode)
if (mode[0] == 'w' && mode[1] == '+')
c->buffer[0] = '\0';
- c->maxpos = strnlen (c->buffer, len);
+ if (mode[0] == 'a')
+ c->maxpos = strnlen (c->buffer, len);
}
diff --git a/stdio-common/tst-fmemopen2.c b/stdio-common/tst-fmemopen2.c
index 16dd3ad73d..a2c05c12df 100644
--- a/stdio-common/tst-fmemopen2.c
+++ b/stdio-common/tst-fmemopen2.c
@@ -34,7 +34,7 @@ do_test_with_buffer (void)
FILE *fp = fmemopen (buf, nbuf, "w");
if (fp == NULL)
{
- printf ("FAIL: fmemopen failedi (%s)\n", __FUNCTION__);
+ printf ("FAIL: fmemopen failed (%s)\n", __FUNCTION__);
return 1;
}
@@ -69,7 +69,7 @@ do_test_with_buffer (void)
if (o != nstr)
{
printf ("FAIL: third ftello returned %jd, expected %zu\n",
- (intmax_t)o, nbuf);
+ (intmax_t)o, nstr);
result = 1;
}