digitalmars.D.bugs - crash D1 compiler
- Zorran <zorran tut.by> Feb 01 2009
- Extrawurst <spam extrawurst.org> Feb 01 2009
- "Simen Kjaeraas" <simen.kjaras gmail.com> Feb 01 2009
- Don <nospam nospam.com> Feb 01 2009
This code crash D1 compiler (v1.039)
============
import std.stdio;
void main()
{
string ss="sample";
printf("%s", cast(char*)(ss+"\0") );
}
===========
Feb 01 2009
Zorran wrote:This code crash D1 compiler (v1.039) ============ import std.stdio; void main() { string ss="sample"; printf("%s", cast(char*)(ss+"\0") ); } ===========
do u mean it actually crashes dmd at compile time or do u mean your application carshes at runtime? try: void foo(char[] ss) { printf("my string is: %.*s\n", ss); } documented under: http://www.digitalmars.com/d/2.0/interfaceToC.html ("Calling printf()")
Feb 01 2009
On Sun, 01 Feb 2009 13:01:09 +0100, Zorran <zorran tut.by> wrote:This code crash D1 compiler (v1.039) ============ import std.stdio; void main() { string ss="sample"; printf("%s", cast(char*)(ss+"\0") ); } ===========
Indeed it does. Now of course, ss + "\0" makes no sense, but the compiler still should not crash. To correctly concatenate two strings, use the ~ operator. Also, to convert a D string to a C string (char *), use toStringz, which automagically adds the terminating null. Your program would then look like this: void main() { string ss = "sample"; printf("%s", toStringz(ss)); } -- Simen
Feb 01 2009
Simen Kjaeraas wrote:On Sun, 01 Feb 2009 13:01:09 +0100, Zorran <zorran tut.by> wrote:This code crash D1 compiler (v1.039) ============ import std.stdio; void main() { string ss="sample"; printf("%s", cast(char*)(ss+"\0") ); } ===========
Indeed it does. Now of course, ss + "\0" makes no sense, but the compiler still should not crash. To correctly concatenate two strings, use the ~ operator. Also, to convert a D string to a C string (char *), use toStringz, which automagically adds the terminating null. Your program would then look like this: void main() { string ss = "sample"; printf("%s", toStringz(ss)); } -- Simen
Feb 01 2009









Extrawurst <spam extrawurst.org> 