]> granicus.if.org Git - graphviz/commitdiff
Fix a couple of lose ends where incorrect information is given in
authorEmden Gansner <emdenrg@google.com>
Fri, 16 Dec 2016 22:15:01 +0000 (17:15 -0500)
committerEmden Gansner <emdenrg@google.com>
Fri, 16 Dec 2016 22:15:01 +0000 (17:15 -0500)
error messages. Make sure each call to agmemread resets the line number
to 1 and the file name to NULL. If the input contains cpp line directive,
another run of agmemread with errors would report them incorrectly.

In addition, the gvNextInputGraph in common/input.s was not resetting the
the file name in the case that the new FILE* happened to use the same memory
as the previous FILE*.

lib/cgraph/io.c
lib/common/input.c

index 3910f44b455d2c2d99a883908016a956004b99bd..34513deab491d319cc68d1337a3bf98c0a7ba6ef 100644 (file)
@@ -142,7 +142,12 @@ Agraph_t *agmemread(const char *cp)
 
     disc.mem = &AgMemDisc;
     disc.id = &AgIdDisc;
-    disc.io = &memIoDisc;
+    disc.io = &memIoDisc;  
+    /* Null out filename and reset line number 
+     * The name may have been set with a ppDirective, and
+     * we want to reset line_num.
+     */
+    agsetfile(NULL);
     g = agread (&rdr, &disc);
     return g;
 }
index cfb809bc9842e153319c01f2109d2256665b57c3..98f193681fa4eb26175ee8b3a22bf561af5234b1 100644 (file)
@@ -572,7 +572,7 @@ graph_t *gvNextInputGraph(GVC_t *gvc)
        }
        if (fp != stdin)
            fclose (fp);
-       fp = NULL;
+       oldfp = fp = NULL;
        gidx = 0;
     }
     return g;