summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Stone <daniels@collabora.com>2017-06-26 16:45:16 +0100
committerDaniel Stone <daniels@collabora.com>2018-08-03 16:13:35 +0100
commita8ea7a1d3daa7bdcb877615ae0a252c189153bd2 (patch)
tree116395008e25bc62478406bf90cd645852eab58a
parent87046f56efc89d3b0771df9b4fefcda39ade3dd1 (diff)
downloadxorg-lib-libxkbcommon-a8ea7a1d3daa7bdcb877615ae0a252c189153bd2.tar.gz
parser: Don't set more maps when we don't have any
If the scanner indicates that we might have something which looks like a map, but the parser in fact fails to create that map, we will try to access the map regardless. Stop doing that. testcase: 'xkb_keymap {' -> '#kb_keymap' Signed-off-by: Daniel Stone <daniels@collabora.com>
-rw-r--r--src/xkbcomp/parser.y5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/xkbcomp/parser.y b/src/xkbcomp/parser.y
index b555bc2..296ce19 100644
--- a/src/xkbcomp/parser.y
+++ b/src/xkbcomp/parser.y
@@ -239,9 +239,9 @@ resolve_keysym(const char *name, xkb_keysym_t *sym_rtrn)
*/
XkbFile : XkbCompositeMap
- { $$ = param->rtrn = $1; param->more_maps = true; }
+ { $$ = param->rtrn = $1; param->more_maps = !!param->rtrn; }
| XkbMapConfig
- { $$ = param->rtrn = $1; param->more_maps = true; YYACCEPT; }
+ { $$ = param->rtrn = $1; param->more_maps = !!param->rtrn; YYACCEPT; }
| END_OF_FILE
{ $$ = param->rtrn = NULL; param->more_maps = false; }
;
@@ -772,6 +772,7 @@ parse(struct xkb_context *ctx, struct scanner *scanner, const char *map)
.scanner = scanner,
.ctx = ctx,
.rtrn = NULL,
+ .more_maps = false,
};
/*