https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70952

Eric Gallager <egallager at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |diagnostic
             Status|REOPENED                    |NEW

--- Comment #8 from Eric Gallager <egallager at gcc dot gnu.org> ---
(In reply to Alexander Monakov from comment #5)
> No, it's not a dup? Invalid octal literals outside of strings are already
> properly diagnosed, so the other bug talks about warning about them _as a
> matter of style_. This bug is about confusing use of octal literals in
> string constants. Compare:
> 
> char c=008;
> 
> error: invalid digit "8" in octal constant
> 
> char c[]="\008";
> 
> [silently accepted with -Wall -Wextra, emits a string literal of size 3]

(In reply to Alexander Monakov from comment #0)
> GCC doesn't warn for:
> 
> const char s[] = "\008";
> 
> (just the two zeros following the backslash become a part of the octal
> literal, so the string literal is equivalent to "\0""8")
> 
> \008 and \009 in string literals are most likely errors (\08 and \09 work
> just as well if a nil character followed by a digit was really intended)
> 
> I think a bit of a bikeshed is possible on the point how far we want to take
> it (do we warn for "\08"? for "\799"?).  I think warning when the octal
> escape with less than 3 digits is followed by [89] is desirable (this
> catches all of the above), but warning when octal escape already has 3
> digits may be not (this exempts "\0009" from the warning).

Oops, sorry, putting back in NEW

Reply via email to