summaryrefslogtreecommitdiff
path: root/usr/src/common/util/getresponse.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/common/util/getresponse.c')
-rw-r--r--usr/src/common/util/getresponse.c19
1 files changed, 15 insertions, 4 deletions
diff --git a/usr/src/common/util/getresponse.c b/usr/src/common/util/getresponse.c
index 6bde237a14..db070816cb 100644
--- a/usr/src/common/util/getresponse.c
+++ b/usr/src/common/util/getresponse.c
@@ -40,13 +40,9 @@
#define DEFAULT_NOEXPR "^[nN]"
#define FREE_MEM \
- if (yesstr) \
free(yesstr); \
- if (nostr) \
free(nostr); \
- if (yesexpr) \
free(yesexpr); \
- if (noexpr) \
free(noexpr)
#define SET_DEFAULT_STRS \
@@ -112,9 +108,24 @@ init_yes(void)
SET_DEFAULT_STRS;
fallback = 1;
}
+ if (fallback == 0) {
+ free(yesexpr);
+ free(noexpr);
+ }
return (0);
}
+void
+fini_yes(void)
+{
+ free(yesstr);
+ free(nostr);
+ yesstr = DEFAULT_YESSTR;
+ nostr = DEFAULT_NOSTR;
+ regfree(&preg_yes);
+ regfree(&preg_no);
+}
+
static int
yes_no(int (*func)(char *))
{