On 10/13/17 6:07 PM, Steven Schveighoffer wrote:
On 10/13/17 4:30 PM, Andrew Edwards wrote:
On Friday, 13 October 2017 at 20:17:50 UTC, Steven Schveighoffer wrote:
On 10/13/17 3:17 PM, Steven Schveighoffer wrote:

this should work (something like this really should be in iopipe):

while(input.extend(0) != 0) {} // get data until EOF

This should work today, actually. Didn't think about it before.

input.ensureElems(size_t.max);


No, it errored out:
std.json.JSONException@std/json.d(1400): Unexpected end of data. (Line 1:8192)


I reproduced, and it comes down to some sort of bug when size_t.max is passed to ensureElems.

I will find and eradicate it.


I think I know, the buffered input source is attempting to allocate a size_t.max size buffer to hold the expected new data, and cannot do so (obviously). I need to figure out how to handle this properly. I shouldn't be prematurely extending the buffer to read all that data.

The while loop does work, I may change ensureElems(size_t.max) to do this. But I'm concerned about accidentally allocating huge buffers. For example ensureElems(1_000_000_000) works, but probably allocates a GB of space in order to "work"!

-Steve

Reply via email to