WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED INVALID
18604
Backslash escape (\) for splitting CSS rules into a couple of lines fails in WebKit
https://bugs.webkit.org/show_bug.cgi?id=18604
Summary
Backslash escape (\) for splitting CSS rules into a couple of lines fails in ...
jasneet
Reported
2008-04-18 17:55:34 PDT
I Steps: Go to
http://www.hixie.ch/tests/evil/css/css21/contributions/incoming/00003.xht
II Issue: The text appears red instead of green as backslash parsing fails. III Conclusion: issue with backslash parsing IV Other browsers: IE7: not ok; link does not open FF3: ok Opera9.24: ok V Nightly tested: 32005 Another link with same issue:
http://www.hixie.ch/tests/evil/css/css21/contributions/incoming/00006.xht
(this test passes in Opera)
Attachments
minimal test case
(369 bytes, application/xhtml+xml)
2008-06-02 04:20 PDT
,
Robert Blaut
no flags
Details
View All
Add attachment
proposed patch, testcase, etc.
Robert Blaut
Comment 1
2008-06-02 04:19:29 PDT
I can confirm the bug. It violates the definition of CSS 2.1 CR: "It is possible to break strings over several lines, for esthetic or other reasons, but in such a case the newline itself has to be escaped with a backslash (\). For instance, the following two selectors are exactly the same: a[title="a not s\ o very long title"] {/*...*/} a[title="a not so very long title"] {/*...*/}" [
http://www.w3.org/TR/CSS21/syndata.html#strings
]
Robert Blaut
Comment 2
2008-06-02 04:20:01 PDT
Created
attachment 21458
[details]
minimal test case
Alexey Proskuryakov
Comment 3
2010-02-16 19:08:24 PST
See also:
bug 28885
.
Glenn Adams
Comment 4
2012-09-27 19:44:06 PDT
the analysis of this bug is incorrect; in particular, the attached test case and the test from hixie cited below [1] contain a backslash that is OUTSIDE of a string, and NOT in a string; [1]
http://www.hixie.ch/tests/evil/css/css21/contributions/incoming/00003.xht
the text cited below in
comment #1
refers to backslash appearing IN a string; the more complete, relevant text from CSS 2.1 is found in Section 4.1.3 [2] which states: "First, inside a string, a backslash followed by a newline is ignored (i.e., the string is deemed not to contain either the backslash or the newline). Outside a string, a backslash followed by a newline stands for itself (i.e., a DELIM followed by a newline)." [2]
http://www.w3.org/TR/CSS2/syndata.html
so, in fact, the backslash followed by newline that appears in these tests should be treated as the token sequence <DELIM NL> according to the general grammar in [3], DELIM matches the 'any' non-terminal, so the attached test should parse as two consecutive rulesets: ruleset <= 'h1 {background: white; color: red}' ruleset <= '\ zzz, h1 {color: green}' where in the second ruleset the selector non-terminal matches DELIM IDENT DELIM IDENT [3]
http://www.w3.org/TR/CSS2/syndata.html#tokenization
now, however, the more restrictive grammar in Appendix G [4] does not admit backslash or DELIM as a token in a selector, so consequently, the second ruleset fails to match the selector non-terminal, and thus the entire second statement is treated as a malformed statement and ignored [5] [4]
http://www.w3.org/TR/CSS2/grammar.html
[5]
http://www.w3.org/TR/CSS2/syndata.html#parsing-errors
i checked both Opera and FF and both behave the same as WK
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug