[
https://issues.apache.org/jira/browse/THRIFT-6065?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Jens Geyer reassigned THRIFT-6065:
----------------------------------
Assignee: Jens Geyer
> Haxe TMemoryStream cannot be written to (fixed-size buffer, uninitialized
> Position)
> -----------------------------------------------------------------------------------
>
> Key: THRIFT-6065
> URL: https://issues.apache.org/jira/browse/THRIFT-6065
> Project: Thrift
> Issue Type: Bug
> Components: Haxe - Library
> Reporter: Jens Geyer
> Assignee: Jens Geyer
> Priority: Major
> Time Spent: 40m
> Remaining Estimate: 0h
>
> TMemoryStream (lib/haxe/src/org/apache/thrift/transport/TMemoryStream.hx)
> cannot be written to.
> Its Write() does Data.set(Position + i, ...) into a fixed-size Bytes, which
> cannot grow, so writing to a freshly constructed stream is out of bounds. On
> the neko target the no-argument constructor never initializes Position, so
> the first write throws "Invalid operation (+)". Write() also never advances
> Position, and the constructor leaves Position at the end of any supplied
> data, so a stream built from existing bytes cannot be read without first
> resetting Position = 0.
> Fix: back the stream with a growable buffer (capacity doubling) so writing
> past the current end enlarges the backing Bytes and advances Position, track
> the logical length separately for Read/Peek, and always initialize Position =
> 0. This lets a single TMemoryStream be used for an in-memory write-then-read
> round-trip (write, set Position = 0, read), as an alternative to a temporary
> file via TFileStream.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)