From c10c9f25d75cd71689050464a5f71cedbe0beaea Mon Sep 17 00:00:00 2001 From: Ran Benita Date: Sun, 26 Jan 2025 14:38:42 +0200 Subject: [PATCH] Don't put bump in scanner Signed-off-by: Ran Benita --- src/compose/parser.c | 6 +++--- src/scanner-utils.h | 3 --- src/xkbcomp/parser-priv.h | 2 +- src/xkbcomp/parser.y | 3 ++- src/xkbcomp/rules.c | 4 ++-- src/xkbcomp/scanner.c | 8 ++++---- 6 files changed, 12 insertions(+), 14 deletions(-) diff --git a/src/compose/parser.c b/src/compose/parser.c index 13e187544..9bf2c23c2 100644 --- a/src/compose/parser.c +++ b/src/compose/parser.c @@ -504,7 +504,7 @@ parse_string_literal(struct xkb_context *ctx, const char *string) { struct scanner s; union lvalue val; - scanner_init(&s, ctx, NULL, string, strlen(string), "(unamed)", NULL); + scanner_init(&s, ctx, string, strlen(string), "(unamed)", NULL); switch (lex(&s, &val)) { case TOK_STRING: return strdup(val.string.str); @@ -551,7 +551,7 @@ do_include(struct xkb_compose_table *table, struct scanner *s, goto err_file; } - scanner_init(&new_s, table->ctx, NULL, string, size, path, s->priv); + scanner_init(&new_s, table->ctx, string, size, path, s->priv); ok = parse(table, &new_s, include_depth + 1); if (!ok) @@ -804,7 +804,7 @@ parse_string(struct xkb_compose_table *table, const char *string, size_t len, const char *file_name) { struct scanner s; - scanner_init(&s, table->ctx, NULL, string, len, file_name, NULL); + scanner_init(&s, table->ctx, string, len, file_name, NULL); if (!parse(table, &s, 0)) return false; /* Maybe the allocator can use the excess space. */ diff --git a/src/scanner-utils.h b/src/scanner-utils.h index 2e98e4513..6f3b7a36e 100644 --- a/src/scanner-utils.h +++ b/src/scanner-utils.h @@ -64,7 +64,6 @@ struct scanner { size_t token_line, token_column; const char *file_name; struct xkb_context *ctx; - struct bump *bump; void *priv; }; @@ -89,7 +88,6 @@ struct scanner { static inline void scanner_init(struct scanner *s, struct xkb_context *ctx, - struct bump *bump, const char *string, size_t len, const char *file_name, void *priv) { @@ -100,7 +98,6 @@ scanner_init(struct scanner *s, struct xkb_context *ctx, s->token_line = s->token_column = 1; s->file_name = file_name; s->ctx = ctx; - s->bump = bump; s->priv = priv; } diff --git a/src/xkbcomp/parser-priv.h b/src/xkbcomp/parser-priv.h index bc7f18dc0..11ed3977b 100644 --- a/src/xkbcomp/parser-priv.h +++ b/src/xkbcomp/parser-priv.h @@ -33,7 +33,7 @@ struct scanner; #include "parser.h" int -_xkbcommon_lex(YYSTYPE *yylval, struct scanner *scanner); +_xkbcommon_lex(YYSTYPE *yylval, struct scanner *s, struct bump *bump); XkbFile * parse(struct bump *bump, struct xkb_context *ctx, struct scanner *scanner, const char *map); diff --git a/src/xkbcomp/parser.y b/src/xkbcomp/parser.y index 1cca94be7..c642c7c38 100644 --- a/src/xkbcomp/parser.y +++ b/src/xkbcomp/parser.y @@ -86,10 +86,11 @@ resolve_keysym(struct parser_param *param, const char *name, xkb_keysym_t *sym_r } #define param_scanner param->scanner +#define param_bump param->bump %} %define api.pure -%lex-param { struct scanner *param_scanner } +%lex-param { struct scanner *param_scanner } { struct bump *param_bump } %parse-param { struct parser_param *param } %token diff --git a/src/xkbcomp/rules.c b/src/xkbcomp/rules.c index 340c1d11b..e32128400 100644 --- a/src/xkbcomp/rules.c +++ b/src/xkbcomp/rules.c @@ -408,7 +408,7 @@ matcher_include(struct matcher *m, struct scanner *parent_scanner, { struct scanner s; /* parses the !include value */ - scanner_init(&s, m->ctx, NULL, inc.start, inc.len, + scanner_init(&s, m->ctx, inc.start, inc.len, parent_scanner->file_name, NULL); s.token_line = parent_scanner->token_line; s.token_column = parent_scanner->token_column; @@ -1514,7 +1514,7 @@ read_rules_file(struct xkb_context *ctx, return false; } - scanner_init(&scanner, matcher->ctx, NULL, string, size, path, NULL); + scanner_init(&scanner, matcher->ctx, string, size, path, NULL); /* Basic detection of wrong character encoding. The first character relevant to the grammar must be ASCII: diff --git a/src/xkbcomp/scanner.c b/src/xkbcomp/scanner.c index 8444d42df..e064de679 100644 --- a/src/xkbcomp/scanner.c +++ b/src/xkbcomp/scanner.c @@ -64,7 +64,7 @@ number(struct scanner *s, int64_t *out, int *out_tok) } int -_xkbcommon_lex(YYSTYPE *yylval, struct scanner *s) +_xkbcommon_lex(YYSTYPE *yylval, struct scanner *s, struct bump *bump) { int tok; @@ -124,7 +124,7 @@ _xkbcommon_lex(YYSTYPE *yylval, struct scanner *s) "unterminated string literal"); return ERROR_TOK; } - yylval->str = s->bump ? bump_strdup(s->bump, s->buf) : strdup(s->buf); + yylval->str = bump_strdup(bump, s->buf); if (!yylval->str) return ERROR_TOK; return STRING; @@ -177,7 +177,7 @@ _xkbcommon_lex(YYSTYPE *yylval, struct scanner *s) tok = keyword_to_token(s->buf, s->buf_pos - 1); if (tok != -1) return tok; - yylval->str = s->bump ? bump_strdup(s->bump, s->buf) : strdup(s->buf); + yylval->str = bump_strdup(bump, s->buf); if (!yylval->str) return ERROR_TOK; return IDENT; @@ -204,7 +204,7 @@ XkbParseString(struct bump *bump, struct xkb_context *ctx, const char *file_name, const char *map) { struct scanner scanner; - scanner_init(&scanner, ctx, bump, string, len, file_name, NULL); + scanner_init(&scanner, ctx, string, len, file_name, NULL); /* Basic detection of wrong character encoding. The first character relevant to the grammar must be ASCII: