https://d.puremagic.com/issues/show_bug.cgi?id=11888
[email protected] changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |[email protected] --- Comment #2 from [email protected] 2014-01-09 23:12:49 PST --- (In reply to comment #0) > So given a C-style function like this, that returns a pointer and length via > pointer argument: > ubyte* test(size_t* len) > { > *len = 100; > return cast(ubyte*)1234; > } > > Call it, but immediately use the size argument to slice a range: > size_t size; > ubyte[] t = test(&size)[0..size]; > > t is null. > > If I break it into separate statements, it works: > size_t size; > ubyte* pt = test(&size); > ubyte[] t = pt[0..size]; > > t.ptr = 1234, t.length = 100; Isn't this an issue mutating and using a parameter in a same "function"? I don't know how the compiler rewrites slicing a pointer, but if you interpret it as a "3-argument function, you get": slice(ptr, low, high); eg: slice(test(&size), 0, size); Here, "size" is read as parameter 3, but also mutated as parameter 1. -- Configure issuemail: https://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
