]> granicus.if.org Git - re2c/commitdiff
Now that we never re-parse anything we can always dicard old data.
authorUlya Trofimovich <skvadrik@gmail.com>
Tue, 7 Mar 2017 18:07:09 +0000 (18:07 +0000)
committerUlya Trofimovich <skvadrik@gmail.com>
Tue, 7 Mar 2017 18:07:09 +0000 (18:07 +0000)
re2c/src/ast/scanner.cc

index 0c5a75ae6111783f8b177c9b64012f8c59e8e7cf..3651096d43e5a7fb7d1f6cd46f3b78cb9974b522 100644 (file)
@@ -47,25 +47,21 @@ void Scanner::fill (uint32_t need)
 {
        if(!eof)
        {
-               /* Do not get rid of anything when rFlag is active. Otherwise
-                * get rid of everything that was already handedout. */
-               if (!opts->rFlag)
+               /* Get rid of everything that was already parsed. */
+               const ptrdiff_t diff = tok - bot;
+               if (diff > 0)
                {
-                       const ptrdiff_t diff = tok - bot;
-                       if (diff > 0)
-                       {
-                               const size_t move = static_cast<size_t> (top - tok);
-                               memmove (bot, tok, move);
-                               tok -= diff;
-                               mar -= diff;
-                               ptr -= diff;
-                               cur -= diff;
-                               pos -= diff;
-                               lim -= diff;
-                               ctx -= diff;
-                       }
+                       const size_t move = static_cast<size_t> (top - tok);
+                       memmove (bot, tok, move);
+                       tok -= diff;
+                       mar -= diff;
+                       ptr -= diff;
+                       cur -= diff;
+                       pos -= diff;
+                       lim -= diff;
+                       ctx -= diff;
                }
-               /* In crease buffer size. */
+               /* Increase buffer size. */
                if (BSIZE > need)
                {
                        need = BSIZE;