Implement yynewstr entry point in new parser
authorH.G. Muller <h.g.muller@hccnet.nl>
Thu, 10 Mar 2011 18:27:41 +0000 (19:27 +0100)
committerArun Persaud <apersaud@lbl.gov>
Sun, 13 Mar 2011 19:40:51 +0000 (12:40 -0700)
This entry point, used for parsing an ICS move list, was forgotten, and
was still an empty routine. This made XBoard crash when observing an ICS
game.

parser.c

index 407b92e..973d109 100644 (file)
--- a/parser.c
+++ b/parser.c
@@ -44,6 +44,7 @@ int ReadLine()
 {   // Read one line from the input file, and append to the buffer\r
     char c, *start = inPtr;\r
     if(fromString) return 0; // parsing string, so the end is a hard end\r
+    if(!inputFile) return 0;\r
     while((c = fgetc(inputFile)) != EOF) {\r
        *inPtr++ = c;\r
        if(c == '\n') { *inPtr = NULLCHAR; return 1; }\r
@@ -521,12 +522,16 @@ void yynewfile (FILE *f)
 {   // prepare parse buffer for reading file\r
     inputFile = f;\r
     inPtr = parsePtr = inputBuf;\r
+    fromString = 0;\r
     lastChar = '\n';\r
     *inPtr = NULLCHAR; // make sure we will start by reading a line\r
 }\r
 \r
 void yynewstr P((char *s))\r
 {\r
+    parsePtr = s;\r
+    inputFile = NULL;\r
+    fromString = 1;\r
 }\r
 \r
 int yylex()\r