[Issue 14582] New: bigEndianToNative buffer slice allows only literals
via Digitalmars-d-bugs
digitalmars-d-bugs at puremagic.com
Wed May 13 22:44:33 PDT 2015
https://issues.dlang.org/show_bug.cgi?id=14582
Issue ID: 14582
Summary: bigEndianToNative buffer slice allows only literals
Product: D
Version: D2
Hardware: All
OS: All
Status: NEW
Severity: regression
Priority: P1
Component: DMD
Assignee: nobody at puremagic.com
Reporter: ljdelight at gmail.com
The std.batmanip bigEndianToNative has a regression where the
slice range doesn't work with variables (only literals).
Using this main.d:
import std.bitmanip;
int main(string args[])
{
auto datain = new ubyte[16];
// this syntax works
ushort descriptorLength =
bigEndianToNative!ushort(datain[2..4]);
// this syntax fails (worked in previous version)
int offset = 2;
descriptorLength = bigEndianToNative!ushort(cast(ubyte[2])
datain[offset..offset+2]);
return 0;
}
I get this error on the command line:
main.d(14): Error: cannot cast expression
datain[cast(uint)offset..cast(uint)(offset + 2)] of type ubyte[] to ubyte[2]
--
More information about the Digitalmars-d-bugs
mailing list