[Nasm-bugs] [Bug 3392599] git nasm: nondeterministic errors when building lDebug assembler tables

noreply-nasm at dev.nasm.us noreply-nasm at dev.nasm.us
Thu Oct 10 02:32:40 PDT 2019


https://bugzilla.nasm.us/show_bug.cgi?id=3392599

--- Comment #11 from C. Masloch <pushbx at ulukai.org> ---
This patch fixes both test cases for me. My understanding of the two error
sites seems to be correct!


diff --git a/asm/preproc.c b/asm/preproc.c
index 14a73885..647e537c 100644
--- a/asm/preproc.c
+++ b/asm/preproc.c
@@ -612,6 +612,7 @@ static Token *expand_smacro(Token * tline);
 static Token *expand_id(Token * tline);
 static Context *get_ctx(const char *name, const char **namep);
 static Token *make_tok_num(Token *next, int64_t val);
+static Token *make_tok_qstr_with_len(Token *next, const char *str, size_t
len);
 static Token *make_tok_qstr(Token *next, const char *str);
 static Token *make_tok_char(Token *next, char op);
 static Token *new_Token(Token * next, enum pp_token_type type,
@@ -4236,7 +4237,7 @@ issue_error:
          * zero, and a numeric token to use as an expansion. Create
          * and store an SMacro.
          */
-        macro_start = make_tok_qstr(NULL, qbuf);
+        macro_start = make_tok_qstr_with_len(NULL, qbuf, len);
         nasm_free(qbuf);
         define_smacro(mname, casesense, macro_start, NULL);
         free_tlist(tline);
@@ -4313,7 +4314,7 @@ issue_error:

        txt = (start < 0) ? "" : tok_text(t) + start;
        len = count;
-        macro_start = make_tok_qstr(NULL, txt);
+        macro_start = make_tok_qstr_with_len(NULL, txt, len);

         /*
          * We now have a macro name, an implicit parameter count of
@@ -6563,13 +6564,18 @@ static Token *make_tok_num(Token *next, int64_t val)
 }

 /* Create a quoted string token */
-static Token *make_tok_qstr(Token *next, const char *str)
+static Token *make_tok_qstr_with_len(Token *next, const char *str, size_t len)
 {
-    size_t len = strlen(str);
     char *p = nasm_quote(str, &len);
     return new_Token_free(next, TOK_STRING, p, len);
 }

+static Token *make_tok_qstr(Token *next, const char *str)
+{
+    size_t len = strlen(str);
+    return make_tok_qstr_with_len(next, str, len);
+}
+
 /* Create a single-character operator token */
 static Token *make_tok_char(Token *next, char op)
 {

-- 
You are receiving this mail because:
You are watching all bug changes.
You are on the CC list for the bug.


More information about the Nasm-bugs mailing list