summaryrefslogtreecommitdiff
blob: c78a22780840327636eb3e67bb4c2d1800a952e4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
https://bugs.gentoo.org/447440

From 7e06e56157e8431d02e1377cdc44230944203d88 Mon Sep 17 00:00:00 2001
From: Alexey Gladkov <gladkov.alexey@gmail.com>
Date: Tue, 11 Dec 2012 14:24:44 +0400
Subject: [PATCH] Fix regression in 16117ce6ab

Signed-off-by: Alexey Gladkov <gladkov.alexey@gmail.com>
---
 src/loadkeys.analyze.l | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/src/loadkeys.analyze.l b/src/loadkeys.analyze.l
index c18dcea..f817c78 100644
--- a/src/loadkeys.analyze.l
+++ b/src/loadkeys.analyze.l
@@ -307,8 +307,10 @@ To                      to|To|TO
 				char *s = xstrndup(yytext+1, strlen(yytext)-2);
 				/* use static pathname to store *s ? */
 				open_include(s);
-				yy_pop_state();
-				state_ptr--;
+				while (state_ptr > 0) {
+					yy_pop_state();
+					state_ptr--;
+				}
 			}
 <INCLSTR>[^"]|\"\"|\"[^"\n]*{Eol}	{
 				yyerror(_("expected filename between quotes"));
@@ -323,7 +325,7 @@ To                      to|To|TO
 			}
 {Eol}			{
 				line_nr++;
-				if (state_ptr > 0) {
+				while (state_ptr > 0) {
 					yy_pop_state();
 					state_ptr--;
 				}
@@ -428,8 +430,10 @@ To                      to|To|TO
 			}
 <STR>\"			{
 				*p = '\0';
-				yy_pop_state();
-				state_ptr--;
+				while (state_ptr > 0) {
+					yy_pop_state();
+					state_ptr--;
+				}
 				return(STRLITERAL);
 			}
 .			{
--- a/src/loadkeys.analyze.c
+++ b/src/loadkeys.analyze.c
@@ -1359,8 +1359,10 @@ YY_RULE_SETUP
 				char *s = xstrndup(yytext+1, strlen(yytext)-2);
 				/* use static pathname to store *s ? */
 				open_include(s);
-				yy_pop_state();
-				state_ptr--;
+				while (state_ptr > 0) {
+					yy_pop_state();
+					state_ptr--;
+				}
 			}
 	YY_BREAK
 case 3:
@@ -1393,7 +1395,7 @@ YY_RULE_SETUP
 #line 324 "loadkeys.analyze.l"
 {
 				line_nr++;
-				if (state_ptr > 0) {
+				while (state_ptr > 0) {
 					yy_pop_state();
 					state_ptr--;
 				}
@@ -1670,8 +1670,10 @@ YY_RULE_SETUP
 #line 429 "loadkeys.analyze.l"
 {
 				*p = '\0';
-				yy_pop_state();
-				state_ptr--;
+				while (state_ptr > 0) {
+					yy_pop_state();
+					state_ptr--;
+				}
 				return(STRLITERAL);
 			}
 	YY_BREAK
-- 
1.8.0.2