autofs-5.0.4 - reset flex scanner when setting buffer
From: Ian Kent <raven@themaw.net>
We still have problems resetting the flex scan buffer after an error
is detected. This appears to fix the problem.
---
CHANGELOG | 1 +
lib/master_tok.l | 9 ++++++++-
2 files changed, 9 insertions(+), 1 deletions(-)
diff --git a/CHANGELOG b/CHANGELOG
index c8b88e4..5f1cf7f 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -38,6 +38,7 @@
- fix lsb init script header.
- fix memory leak reading master map.
- fix st_remove_tasks() locking.
+- reset flex scanner when setting buffer.
4/11/2008 autofs-5.0.4
-----------------------
diff --git a/lib/master_tok.l b/lib/master_tok.l
index b6cc8be..373248b 100644
--- a/lib/master_tok.l
+++ b/lib/master_tok.l
@@ -130,7 +130,6 @@ OPTNTOUT (-n{OPTWS}|-n{OPTWS}={OPTWS}|--negative-timeout{OPTWS}|--negative-timeo
\x00 {
if (optr != buff) {
*optr = '\0';
- optr = buff;
strcpy(master_lval.strtype, buff);
return NILL;
}
@@ -139,6 +138,11 @@ OPTNTOUT (-n{OPTWS}|-n{OPTWS}={OPTWS}|--negative-timeout{OPTWS}|--negative-timeo
#.* { return COMMENT; }
"/" {
+ if (optr != buff) {
+ *optr = '\0';
+ strcpy(master_lval.strtype, buff);
+ return NILL;
+ }
BEGIN(PATHSTR);
bptr = buff;
yyless(0);
@@ -410,6 +414,9 @@ static void master_echo(void)
void master_set_scan_buffer(const char *buffer)
{
+ master_lex_destroy();
+ optr = buff;
+
line = buffer;
line_pos = &line[0];
/*