]> Shamusworld >> Repos - rmac/blobdiff - token.c
Fix for bug #174 - when a macro contains an error, actually print the filename it...
[rmac] / token.c
diff --git a/token.c b/token.c
index 1e5428200bf0ce952b748445e15349f42bd09765..807f08fc34b4f2789b90bc557e5758dc11711018 100644 (file)
--- a/token.c
+++ b/token.c
@@ -1,7 +1,7 @@
 //
-// RMAC - Reboot's Macro Assembler for all Atari computers
+// RMAC - Renamed Macro Assembler for all Atari computers
 // TOKEN.C - Token Handling
-// Copyright (C) 199x Landon Dyer, 2011-2020 Reboot and Friends
+// Copyright (C) 199x Landon Dyer, 2011-2021 Reboot and Friends
 // RMAC derived from MADMAC v1.07 Written by Landon Dyer, 1986
 // Source utilised with the kind permission of Landon Dyer
 //
@@ -22,7 +22,7 @@
 
 
 int lnsave;                                    // 1; strcpy() text of current line
-uint16_t curlineno;                    // Current line number (64K max currently)
+uint32_t curlineno;                    // Current line number (64K max currently)
 int totlines;                          // Total # of lines
 int mjump_align = 0;           // mjump alignment flag
 char lntag;                                    // Line tag
@@ -40,13 +40,6 @@ TOKEN tokeol[1] = {EOL};     // Bailout end-of-line token
 char * string[TOKBUFSIZE*2];// Token buffer string pointer storage
 int optimizeOff;                       // Optimization override flag
 
-// File record, used to maintain a list of every include file ever visited
-#define FILEREC struct _filerec
-FILEREC
-{
-   FILEREC * frec_next;
-   char * frec_name;
-};
 
 FILEREC * filerec;
 FILEREC * last_fr;
@@ -673,7 +666,6 @@ overflow:
 char * GetNextMacroLine(void)
 {
        IMACRO * imacro = cur_inobj->inobj.imacro;
-//     LONG * strp = imacro->im_nextln;
        LLIST * strp = imacro->im_nextln;
 
        if (strp == NULL)                                               // End-of-macro
@@ -1082,7 +1074,7 @@ DEBUG { printf("TokenizeLine: Calling fpop() from SRC_IFILE...\n"); }
        for(; *ln!=EOS;)
        {
                // Check to see if there's enough space in the token buffer
-               if (tk.cp >= ((uint8_t *)(&tokbuf[TOKBUFSIZE])))
+               if (tk.cp >= ((uint8_t *)(&tokbuf[TOKBUFSIZE])) - 20)
                {
                        return error("token buffer overrun");
                }
@@ -1663,7 +1655,7 @@ int d_goto(WORD unused)
                {
                        // Compare names (sleazo string compare)
                        char * s1 = sym;
-                       char * s2 = defln->line;
+                       char * s2 = defln->line + 1;
 
                        // Either we will match the strings to EOS on both, or we will
                        // match EOS on string 1 to whitespace on string 2. Otherwise, we