]> granicus.if.org Git - graphviz/commitdiff
Close output file descriptor only after done writing
authorMark Hansen <markhansen@google.com>
Tue, 2 Mar 2021 08:14:13 +0000 (19:14 +1100)
committerMark Hansen <markhansen@google.com>
Tue, 2 Mar 2021 08:14:13 +0000 (19:14 +1100)
Previously we would close the output as soon as we wrote a single line.

This didn't account for continuation lines, where $1 == "".

The subsequent printfs would be to a closed file.

Fixes #1965

doc/infosrc/brewer.awk

index cdabd9acde6475634bd4e8788dac5addfe993240..2e2e89ef2912bd79dae72a369d85eb0b283beed0 100644 (file)
@@ -7,9 +7,13 @@ BEGIN {
 }
 /^[^#]/{
   if ($1 != "") {
+    # Close previous file handle to avoid exhausting file descriptors on macOS
+    # https://gitlab.com/graphviz/graphviz/-/issues/1965
+    if (name) {
+      close(name);
+    }
     name = "colortmp/" $1 $2;
     gsub ("\"","",name);
   }
   printf ("%s %s %s %s\n", $5, $7, $8, $9) > name; 
-  close(name);
 }