Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/lib/libc/stdio PR/51572: calling funopen on each printw call...
details: https://anonhg.NetBSD.org/src/rev/2d0a335871d2
branches: trunk
changeset: 348538:2d0a335871d2
user: christos <christos%NetBSD.org@localhost>
date: Sun Oct 23 21:01:52 2016 +0000
description:
PR/51572: calling funopen on each printw call is a tad excessive, but this
is not a reason for funopen to leak. Always call the close function since we
are indirecting through our cookie and we need to free it.
diffstat:
lib/libc/stdio/funopen.c | 9 +++++----
1 files changed, 5 insertions(+), 4 deletions(-)
diffs (37 lines):
diff -r 14c233d8d1f6 -r 2d0a335871d2 lib/libc/stdio/funopen.c
--- a/lib/libc/stdio/funopen.c Sun Oct 23 18:51:55 2016 +0000
+++ b/lib/libc/stdio/funopen.c Sun Oct 23 21:01:52 2016 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: funopen.c,v 1.14 2012/03/28 15:21:11 christos Exp $ */
+/* $NetBSD: funopen.c,v 1.15 2016/10/23 21:01:52 christos Exp $ */
/*-
* Copyright (c) 1990, 1993
@@ -37,7 +37,7 @@
#if 0
static char sccsid[] = "@(#)funopen.c 8.1 (Berkeley) 6/4/93";
#else
-__RCSID("$NetBSD: funopen.c,v 1.14 2012/03/28 15:21:11 christos Exp $");
+__RCSID("$NetBSD: funopen.c,v 1.15 2016/10/23 21:01:52 christos Exp $");
#endif
#endif /* LIBC_SCCS and not lint */
@@ -138,6 +138,8 @@
void *c = d->cookie;
int (*cf)(void *) = d->closefn;
free(dookie);
+ if (cf == NULL)
+ return 0;
return (*cf)(c);
}
@@ -163,8 +165,7 @@
d->readfn ? creadfn : NULL,
d->writefn ? cwritefn : NULL,
d->seekfn ? cseekfn : NULL,
- NULL,
- d->closefn ? cclosefn : NULL);
+ NULL, cclosefn);
if (fp != NULL)
return fp;
free(d);
Home |
Main Index |
Thread Index |
Old Index