summaryrefslogtreecommitdiffstats
path: root/lib/libc/gen/setmode.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libc/gen/setmode.c')
-rw-r--r--lib/libc/gen/setmode.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/lib/libc/gen/setmode.c b/lib/libc/gen/setmode.c
index c13720e8cd3..72349eadfc6 100644
--- a/lib/libc/gen/setmode.c
+++ b/lib/libc/gen/setmode.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: setmode.c,v 1.7 1997/07/25 20:30:04 mickey Exp $ */
+/* $OpenBSD: setmode.c,v 1.8 1998/08/14 21:39:33 deraadt Exp $ */
/* $NetBSD: setmode.c,v 1.15 1997/02/07 22:21:06 christos Exp $ */
/*
@@ -41,7 +41,7 @@
#if 0
static char sccsid[] = "@(#)setmode.c 8.2 (Berkeley) 3/25/94";
#else
-static char rcsid[] = "$OpenBSD: setmode.c,v 1.7 1997/07/25 20:30:04 mickey Exp $";
+static char rcsid[] = "$OpenBSD: setmode.c,v 1.8 1998/08/14 21:39:33 deraadt Exp $";
#endif
#endif /* LIBC_SCCS and not lint */
@@ -164,8 +164,12 @@ common: if (set->cmd2 & CMD2_CLR) {
register BITCMD *newset; \
setlen += SET_LEN_INCR; \
newset = realloc(saveset, sizeof(BITCMD) * setlen); \
- if (!saveset) \
+ if (!newset) { \
+ if (saveset) \
+ free(saveset); \
+ saveset = NULL; \
return (NULL); \
+ } \
set = newset + (set - saveset); \
saveset = newset; \
endset = newset + (setlen - 2); \