Native Boost issue

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Native Boost issue

S Krish


Find that the NBExternalAddress >> readString returns extra bytes... 

did a simple cmd pipe interface .. and the readPipe with a buffer passed ends up with 4 bytes extra in specific boundary of passed buffer size.

viz: if I pass buf := (  NativeBoost allocate: 4096) as the buffer and then read it as buf readString. The size returned is 4100 instead of 4096. For some other lesser reads occassionally it is off by one byte..


Will try to post a simple example to replicate this.
Reply | Threaded
Open this post in threaded view
|

Re: Native Boost issue

Igor Stasenko
On 7 February 2013 14:15, S Krish <[hidden email]> wrote:

>
>
> Find that the NBExternalAddress >> readString returns extra bytes...
>
> did a simple cmd pipe interface .. and the readPipe with a buffer passed
> ends up with 4 bytes extra in specific boundary of passed buffer size.
>
> viz: if I pass buf := (  NativeBoost allocate: 4096) as the buffer and then
> read it as buf readString. The size returned is 4100 instead of 4096. For
> some other lesser reads occassionally it is off by one byte..
>

well, readString copying a null-terminated string from memory to
ByteString instance
and to calculate the string size it searching for first zero byte in
provided buffer..
if you buffer contains no zeroes at all, it will keep looking until it
find it (since it has no idea
of your buffer size).


>
> Will try to post a simple example to replicate this.



--
Best regards,
Igor Stasenko.

Reply | Threaded
Open this post in threaded view
|

Re: Native Boost issue

S Krish
So NativeBoost allocate: 4096 will have to be followed with a null terminated byte.. for guarantee..

I will need to check if we can do ZeroMemory rather than just a plain allocation as the above seems to be..



On Thu, Feb 7, 2013 at 7:00 PM, Igor Stasenko <[hidden email]> wrote:
On 7 February 2013 14:15, S Krish <[hidden email]> wrote:
>
>
> Find that the NBExternalAddress >> readString returns extra bytes...
>
> did a simple cmd pipe interface .. and the readPipe with a buffer passed
> ends up with 4 bytes extra in specific boundary of passed buffer size.
>
> viz: if I pass buf := (  NativeBoost allocate: 4096) as the buffer and then
> read it as buf readString. The size returned is 4100 instead of 4096. For
> some other lesser reads occassionally it is off by one byte..
>

well, readString copying a null-terminated string from memory to
ByteString instance
and to calculate the string size it searching for first zero byte in
provided buffer..
if you buffer contains no zeroes at all, it will keep looking until it
find it (since it has no idea
of your buffer size).


>
> Will try to post a simple example to replicate this.



--
Best regards,
Igor Stasenko.