I'm having trouble passing D strings (char[]) to SDL, in particular
SDL_LoadBMP(), I keep receiving a segfault.

Heres the code:

void setImg(string path) {
// concat null terminating char to string and cast to c type string when
    // passing to SDL_LoadBMP()
    path ~= "\0";
    image = SDL_LoadBMP( cast(char*)path );
}

and the value of path is "./resources/cannon.bmp"

I'm using SDL 1.2.14 and DMD 1.067 on Ubuntu 10.10

Well strings are put into read-only space on Linux and I guess this is also the case for D1.
Since you are doing a ~= it probably tries to alter that value and crashes.

You should use something like SDL_LoadBMP(cast(char*)(path ~ "\0")) if you really wanted to convert it manually.
But the proper way to convert a string to a C char* is to use toStringz.

Reply via email to