summaryrefslogtreecommitdiff
path: root/libio/oldfmemopen.c
diff options
context:
space:
mode:
Diffstat (limited to 'libio/oldfmemopen.c')
-rw-r--r--libio/oldfmemopen.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/libio/oldfmemopen.c b/libio/oldfmemopen.c
index 8e35672327..2678a5d6be 100644
--- a/libio/oldfmemopen.c
+++ b/libio/oldfmemopen.c
@@ -1,5 +1,5 @@
/* Fmemopen implementation.
- Copyright (C) 2000-2015 Free Software Foundation, Inc.
+ Copyright (C) 2000-2016 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Hanno Mueller, kontakt@hanno.de, 2000.
@@ -204,6 +204,7 @@ __old_fmemopen (void *buf, size_t len, const char *mode)
{
cookie_io_functions_t iof;
fmemopen_cookie_t *c;
+ FILE *result;
if (__glibc_unlikely (len == 0))
{
@@ -259,7 +260,16 @@ __old_fmemopen (void *buf, size_t len, const char *mode)
iof.seek = fmemopen_seek;
iof.close = fmemopen_close;
- return _IO_fopencookie (c, mode, iof);
+ result = _IO_fopencookie (c, mode, iof);
+ if (__glibc_unlikely (result == NULL))
+ {
+ if (c->mybuffer)
+ free (c->buffer);
+
+ free (c);
+ }
+
+ return result;
}
compat_symbol (libc, __old_fmemopen, fmemopen, GLIBC_2_2);
#endif