summaryrefslogtreecommitdiff
path: root/libio/memstream.c
diff options
context:
space:
mode:
Diffstat (limited to 'libio/memstream.c')
-rw-r--r--libio/memstream.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/libio/memstream.c b/libio/memstream.c
index 877383f3a8..4cc9ab2dfc 100644
--- a/libio/memstream.c
+++ b/libio/memstream.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995-97,99,2000,2002-2004,2006 Free Software Foundation, Inc.
+/* Copyright (C) 1995-97,99,2000,2002,2003,2004 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -83,7 +83,7 @@ open_memstream (bufloc, sizeloc)
new_f->fp._sf._sbf._f._lock = &new_f->lock;
#endif
- buf = calloc (1, _IO_BUFSIZ);
+ buf = malloc (_IO_BUFSIZ);
if (buf == NULL)
return NULL;
INTUSE(_IO_init) (&new_f->fp._sf._sbf._f, 0);
@@ -106,6 +106,11 @@ _IO_mem_sync (fp)
_IO_FILE* fp;
{
struct _IO_FILE_memstream *mp = (struct _IO_FILE_memstream *) fp;
+ int res;
+
+ res = _IO_default_sync (fp);
+ if (res < 0)
+ return res;
if (fp->_IO_write_ptr == fp->_IO_write_end)
{
@@ -135,9 +140,9 @@ _IO_mem_finish (fp, dummy)
{
(*mp->bufloc)[fp->_IO_write_ptr - fp->_IO_write_base] = '\0';
*mp->sizeloc = fp->_IO_write_ptr - fp->_IO_write_base;
-
- fp->_IO_buf_base = NULL;
}
- _IO_str_finish (fp, 0);
+ fp->_IO_buf_base = NULL;
+
+ INTUSE(_IO_default_finish) (fp, 0);
}