]> granicus.if.org Git - graphviz/commitdiff
fix: no longer lose \n within quoted strings
authorMatthew Fernandez <matthew.fernandez@gmail.com>
Sat, 30 Jan 2021 03:01:34 +0000 (19:01 -0800)
committerMatthew Fernandez <matthew.fernandez@gmail.com>
Fri, 5 Feb 2021 04:18:19 +0000 (20:18 -0800)
9bdd24cae96d01fc6b2a940bc87d27edeb5d84a7 addressed a problem where line number
tracking was not working across new line characters embedded within quoted
strings. However it accidentally unmasked another bug involving a parsing rule
that swallowed new lines which was incorrectly enabled within quoted strings.
Fixes #1931.

CHANGELOG.md
lib/cgraph/scan.l
rtest/test_regression.py

index 853e75370c1de7a5ed5145ecccf295b81f9ce4e7..270014ef482587bd62096a98330c46dd831edece 100644 (file)
@@ -28,6 +28,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 - Out-of-bounds write caused by incorrect error handling of malloc in genUserdata #1928
 - Offer .tar.xz files too #454
 - Header file graphviz_version.h has no include guards #1929
+- regression: newlines embedded in quoted labels / node names are not preserved in 2.46.0 #1931
 
 ## [2.46.0] - 2021-01-18
 
index 3f80f8c7ece732f1118b59e1977cf5415fe39404..7845ea1b6ea41d3bb4fbedf758c37e3e55ad56e2 100644 (file)
@@ -201,7 +201,7 @@ ID          ({NAME}|{NUMBER})
 %x hstring
 %%
 {GRAPH_EOF_TOKEN}              return(EOF);
-<INITIAL,comment,qstring>\n    line_num++;
+<INITIAL,comment>\n    line_num++;
 "/*"                                   BEGIN(comment);
 <comment>[^*\n]*               /* eat anything not a '*' */
 <comment>"*"+[^*/\n]*  /* eat up '*'s not followed by '/'s */
@@ -226,6 +226,7 @@ ID          ({NAME}|{NUMBER})
 <qstring>[\\]["]               addstr ("\"");
 <qstring>[\\][\\]              addstr ("\\\\");
 <qstring>[\\][\n]              line_num++; /* ignore escaped newlines */
+<qstring>[\n]                  addstr ("\n"); line_num++;
 <qstring>([^"\\\n]*|[\\])              addstr(aagtext);
 [<]                                            BEGIN(hstring); html_nest = 1; beginstr();
 <hstring>[>]                   html_nest--; if (html_nest) addstr(aagtext); else {BEGIN(INITIAL); endstr_html(); return (T_qatom);}
index 2a9d5c79fcb7b267018f0c3bcf7f85948ef26fe7..46650af6c24a39450170ef17972f4d0b0ff6b991 100644 (file)
@@ -719,7 +719,6 @@ def test_1913():
       _, stderr = run(graph.format(input))
       assert 'Warning: Illegal value {} for ALIGN - ignored'.format(input) in stderr
 
-@pytest.mark.xfail(strict=True)
 def test_1931():
     '''
     New lines within strings should not be discarded during parsing