I appreciate your confidence, but you are wrong:
OpenSolaris/suncc, Jacques' program:
$ cat immutable.c
#include <stdio.h>
int main()
{
char * s = "abc";
*s = 'c';
printf("%s\n", s);
return 0;
}
$ cc -o immutable immutable.c
$ ./immutable
cbc
EDIT: I can't reply to you, so I have to take this route.
I also think that this behavior is not desirable. However,
I do not see the passage in the the standard that
forbids
writable strings. On the contrary, in Annex J writable
string literals are explicitly allowed as an extension,
and I don't see any indication that the presence of
writable strings make an implementation non-conforming.
Perhaps you could point to the passage in the standard
that requires string literals to be immutable (your words,
not mine) or that requires a compiler to issue a warning
if a string literal is modified.
If you still wonder why I'm arguing this: It is not for
the sake of nitpicking, but to support kabdib's post.