On Saturday, 10 February 2018 at 22:36:41 UTC, ag0aep6g wrote:
On 02/10/2018 11:26 PM, David Zhang wrote:
I've got an immutable string declared in module scope, and I attempted to get a pointer to its characters through both &str[0] and str.ptr. However, it appears to me that the string is behaving like a manifest constant, in that the pointer is null.

The language reference indicates that it has a location in memory and thus has a pointer.

So, my question is thus: Is this a bug in DMD, or is this just something I missed?

The pointer should not be null, even when `str` is a manifest constant. But without code it's impossible to say if you're hitting a compiler bug or if you're doing something wrong.

Ah, yeah.

It appears to occur only when compiled in x86 mode.

This is what I'm talking about:

void createWindow( ... ) {

    assert( wndclassName.ptr ); //This fails

    HWND hwnd = CreateWindowW(
        wndclassName.ptr, //This too
        null,
        0,
        CW_USEDEFAULT, CW_USEDEFAULT,
        CW_USEDEFAULT, CW_USEDEFAULT,
        null,
        null,
        null,
        null
    );
}

wstring wndclassName = "wndclass_name"w;

Reply via email to