On Tue, Mar 31, 2020 at 6:36 AM Eric Blake wrote: > On 3/31/20 2:00 AM, Oğuz wrote: > > Thanks for the reply. This might not be a bug though; I sent a similar mail > > (https://www.mail-archive.com/austin-group-l@opengroup.org/msg05881.html) > > to Austin Group mailing list asking what's the expected behavior in this > > case, and I was told ( > > https://www.mail-archive.com/austin-group-l@opengroup.org/msg05891.html) > > both behaviors -yielding n or empty line- are correct and standard should > > *probably* be amended to explicitly state that this is unspecified. And > > apparently ( > > https://www.mail-archive.com/austin-group-l@opengroup.org/msg05893.html) > > some other UNIXes adopted the same practice as GNU sed (or vice versa, I > > don't know which one is older). > > The POSIX folks will probably declare that use of a \X sequence (for > arbitrary X; 'n', 't', '1', and probably others all fit this category) > inside a regex delimited by X is unspecified behavior. But that still > doesn't stop us from fixing GNU set to at least be consistent - we > should either blindly declare that \X represents the special meaning of > X when such a meaning is present regardless of X also being the regex > delimiter (our current \n behavior - no way to represent the delimiter > as a literal match), or that use of X as a delimiter renders the special > meaning of \X useless for that regex (our \t behavior - no way to > represent the special behavior as part of the match). My personal > preference is making things consistent to our \t behavior. > > >> In the code, the "match_slash" function [1] is used to find > >> the delimiters of the "s" command (typically "slashes"). > >> Special handling happens if a slash is found [2], > >> And in lines 557-8 there's this conditional: > >> > >> else if (ch == 'n' && regex) > >> ch = '\n'; > >> > >> Which forces any "\n" to be a new-line, regardless if the > >> delimiter itself was an "n". > >> > > >> Interestingly, removing these two lines does not cause > >> any test failures, so this might be easy to fix without causing > >> any regressions. > >> > >> > >> For now I'm leaving this item open until we decide how to deal with it. > > I'm thus in favor of removing that special-case of 'n'. Thank you all. Sorry it's taken so long. I expect to push the following tomorrow.