]>
Commit | Line | Data |
---|---|---|
e5fd101c PS |
1 | autofs-5.0.4 - reset flex scanner when setting buffer |
2 | ||
3 | From: Ian Kent <raven@themaw.net> | |
4 | ||
5 | We still have problems resetting the flex scan buffer after an error | |
6 | is detected. This appears to fix the problem. | |
7 | --- | |
8 | ||
9 | CHANGELOG | 1 + | |
10 | lib/master_tok.l | 9 ++++++++- | |
11 | 2 files changed, 9 insertions(+), 1 deletions(-) | |
12 | ||
13 | ||
14 | diff --git a/CHANGELOG b/CHANGELOG | |
15 | index c8b88e4..5f1cf7f 100644 | |
16 | --- a/CHANGELOG | |
17 | +++ b/CHANGELOG | |
18 | @@ -38,6 +38,7 @@ | |
19 | - fix lsb init script header. | |
20 | - fix memory leak reading master map. | |
21 | - fix st_remove_tasks() locking. | |
22 | +- reset flex scanner when setting buffer. | |
23 | ||
24 | 4/11/2008 autofs-5.0.4 | |
25 | ----------------------- | |
26 | diff --git a/lib/master_tok.l b/lib/master_tok.l | |
27 | index b6cc8be..373248b 100644 | |
28 | --- a/lib/master_tok.l | |
29 | +++ b/lib/master_tok.l | |
30 | @@ -130,7 +130,6 @@ OPTNTOUT (-n{OPTWS}|-n{OPTWS}={OPTWS}|--negative-timeout{OPTWS}|--negative-timeo | |
31 | \x00 { | |
32 | if (optr != buff) { | |
33 | *optr = '\0'; | |
34 | - optr = buff; | |
35 | strcpy(master_lval.strtype, buff); | |
36 | return NILL; | |
37 | } | |
38 | @@ -139,6 +138,11 @@ OPTNTOUT (-n{OPTWS}|-n{OPTWS}={OPTWS}|--negative-timeout{OPTWS}|--negative-timeo | |
39 | #.* { return COMMENT; } | |
40 | ||
41 | "/" { | |
42 | + if (optr != buff) { | |
43 | + *optr = '\0'; | |
44 | + strcpy(master_lval.strtype, buff); | |
45 | + return NILL; | |
46 | + } | |
47 | BEGIN(PATHSTR); | |
48 | bptr = buff; | |
49 | yyless(0); | |
50 | @@ -410,6 +414,9 @@ static void master_echo(void) | |
51 | ||
52 | void master_set_scan_buffer(const char *buffer) | |
53 | { | |
54 | + master_lex_destroy(); | |
55 | + optr = buff; | |
56 | + | |
57 | line = buffer; | |
58 | line_pos = &line[0]; | |
59 | /* |