[ 
https://issues.apache.org/jira/browse/THRIFT-5093?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Christopher Friedt updated THRIFT-5093:
---------------------------------------
    Summary: TMemoryBuffer fix wpos for policy == OBSERVER   (was: 
TMemoryBuffer constructor initializes wpos incorrectly)

> TMemoryBuffer fix wpos for policy == OBSERVER 
> ----------------------------------------------
>
>                 Key: THRIFT-5093
>                 URL: https://issues.apache.org/jira/browse/THRIFT-5093
>             Project: Thrift
>          Issue Type: Bug
>          Components: C++ - Library
>    Affects Versions: 0.10.0, 0.11.0, 0.12.0, 0.13.0
>            Reporter: Christopher Friedt
>            Priority: Major
>          Time Spent: 2h
>  Remaining Estimate: 0h
>
> The TMemoryBuffer policy is "OBSERVER" by default in a constructor where an 
> external pointer to memory, and the size of that memory, are passed in. That 
> scenario is for externally managed buffers.
> As an observer of a buffer, Thrift should only be able to read. However, 
> previously, `buf.available_read()` would return 0 (and subsequently, 
> `buf.read()` would fail). 
> I've added a test as a separate commit, so it's easy to observe the failure 
> and fix. The current behaviour produces the following failure.
> {noformat}
> TMemoryBufferTest.cpp(141): error: in "TMemoryBufferTest/test_observer": 
> check N == buf.available_read() has failed [1024 != 0]
> {noformat}
> With this change, Thrift applications that use Memory as a transport are able 
> to read `OBSERVER` buffers as well (as one would expect) and the error above 
> is mitigated.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to