fix up macro expansion
[pspp] / src / language / lexer / lexer.c
index e8a2677986f229c95b9765fa79ce4689494b2416..6e9bba43a789042259132b1ba7a3bde63407c6e8 100644 (file)
@@ -1842,7 +1842,9 @@ lex_source_get (const struct lex_source *src_)
         .representation = ss_buffer (&src->buffer[start - src->tail],
                                      end - start),
       };
+      src->middle += middle_ofs + 1;
       n_call = macro_expander_add (me, &mt);
+      src->middle -= middle_ofs + 1;
     }
   if (n_call < 0)
     {
@@ -1863,7 +1865,7 @@ lex_source_get (const struct lex_source *src_)
   const struct lex_token *call_first
     = &src->tokens[src->middle & (src->capacity - 1)];
   const struct lex_token *call_last
-    = &src->tokens[(src->middle + n_call) & (src->capacity - 1)];
+    = &src->tokens[(src->middle + n_call - 1) & (src->capacity - 1)];
   size_t call_pos = call_first->token_pos;
   size_t call_len = (call_last->token_pos + call_last->token_len) - call_pos;
   size_t line_pos = call_first->line_pos;