On Sunday, 29 May 2016 at 18:52:36 UTC, pineapple wrote:
What's the best way to handle something like this?

Well I did get something to work but it's ugly and I refuse to believe there isn't a better way to handle this.

Where `Range` is an alias to a struct with an immutable member, and `this.source` is the attribute that I need to be able to re-assign to a locally scoped return value:

    import core.stdc.stdlib : malloc, free;

    if(this.source) free(source);
    ubyte* newptr = cast(ubyte*) malloc(Range.sizeof);
    assert(newptr !is null, "Failed to allocate memory.");

    Range saved = this.original.save;
    ubyte* savedptr = cast(ubyte*) &saved;
    for(size_t i; i < Range.sizeof; i++){
        newptr[i] = savedptr[i];
    }
    this.source = cast(Range*) newptr;

Reply via email to