forget a few __APPLE__ ifdefs; changed to OSXAPP
[xboard.git] / parser.c
index 08dc513..c5b79fa 100644 (file)
--- a/parser.c
+++ b/parser.c
@@ -1,7 +1,7 @@
 /*
  * parser.c --
  *
- * Copyright 2011, 2012, 2013 Free Software Foundation, Inc.
+ * Copyright 2011, 2012, 2013, 2014 Free Software Foundation, Inc.
  * ------------------------------------------------------------------------
  *
  * GNU XBoard is free software: you can redistribute it and/or modify
@@ -87,7 +87,7 @@ SkipWhite (char **p)
     return *p != start;
 }
 
-inline int
+static inline int
 Match (char *pattern, char **ptr)
 {
     char *p = pattern, *s = *ptr;
@@ -99,7 +99,7 @@ Match (char *pattern, char **ptr)
     return 0; // no match, no ptr update
 }
 
-inline int
+static inline int
 Word (char *pattern, char **p)
 {
     if(Match(pattern, p)) return 1;
@@ -174,6 +174,10 @@ NextUnit (char **p)
            if(fromString) return 0; // we are parsing string, so the end is really the end
            *p = inPtr = inputBuf;
            if(!ReadLine()) return 0; // EOF
+       } else if(inPtr > inputBuf + PARSEBUFSIZE/2) { // buffer fills up with already parsed stuff
+           char *q = *p, *r = inputBuf;
+           while(*r++ = *q++);
+           *p = inputBuf; inPtr = r - 1;
        }
        parseStart = oldp = *p; // remember where we begin