aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog8
-rw-r--r--libio/fmemopen.c2
-rw-r--r--libio/iofopncook.c11
3 files changed, 18 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 7eb5f79578..01dd44d8c0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2005-09-23 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #394]
+ * libio/fmemopen.c (fmemopen_write): Return 0 instead of -1 if
+ nothing can be written.
+ * libio/iofopncook.c (_IO_cookie_write): If something went wrong,
+ set error bit.
+
2005-09-22 Ulrich Drepper <drepper@redhat.com>
[BZ #281]
diff --git a/libio/fmemopen.c b/libio/fmemopen.c
index 7c8769a130..b847f62c9a 100644
--- a/libio/fmemopen.c
+++ b/libio/fmemopen.c
@@ -127,7 +127,7 @@ fmemopen_write (void *cookie, const char *b, size_t s)
if ((size_t) (c->pos + addnullc) == c->size)
{
__set_errno (ENOSPC);
- return -1;
+ return 0;
}
s = c->size - c->pos - addnullc;
}
diff --git a/libio/iofopncook.c b/libio/iofopncook.c
index 9c5503d1f2..976ff5093a 100644
--- a/libio/iofopncook.c
+++ b/libio/iofopncook.c
@@ -64,9 +64,16 @@ _IO_cookie_write (fp, buf, size)
struct _IO_cookie_file *cfile = (struct _IO_cookie_file *) fp;
if (cfile->__io_functions.write == NULL)
- return -1;
+ {
+ fp->_flags |= _IO_ERR_SEEN;
+ return 0;
+ }
+
+ _IO_ssize_t n = cfile->__io_functions.write (cfile->__cookie, buf, size);
+ if (n < size)
+ fp->_flags |= _IO_ERR_SEEN;
- return cfile->__io_functions.write (cfile->__cookie, buf, size);
+ return n;
}
static _IO_off64_t