[Libreoffice-commits] core.git: desktop/source
julien2412
serval2412 at yahoo.fr
Thu Feb 21 04:22:44 PST 2013
Norbert Thiebaud wrote
> On Wed, Feb 20, 2013 at 7:54 AM, julien2412 <
> serval2412@
> > wrote:
>>
>> Yes I meant it, why? Is it wrong?
>> if "pReceiveBuffer" is initialized with 0 for the (sc_nCSASeqLength + 1)
>> elements thanks to = {0} initialization, what obvious thing did I miss?
>> Why
>> "pReceiveBuffer[nBytes-1] = 0;" would need to stay?
>
> Ok since I added that particular code, let me explain
>
>> - if (nBytes > 0)
>> - {
>> - pReceiveBuffer[nBytes-1] = 0;
>> - }
>
> was needed because the loop before can exit under 2 conditions:
> the normal one where a[nBytes - 1] is already 0
> or the 'non-normal' one when the recv return 0 (or -1 for that matter)
> which mean the pipe got interrupted prematurely, in which case the
> buffer would _not_ be 0-terminated
> which was relyied upon later.
>
> there is also the case where recv bail out before reading anything at
> that point nByte = 0 si of course we do not want to do a[nByte - 1]
> and for that case a[0] is set to 0;
>
> initializing the whole buffer is a waste in all case but the corner
> case where the pipe get broken.
>
> Note: it is clearly not expected that the pipe close with receiving
> a\0 as last character... ortherwise we would already be segfaulting a
> lot due to the code aftert that that _assume_ that the buffer is a
> 0-terminated string.
> so there is no particular danger that a valid character would be
> overwritten in normal expected cases.
Thank you Norbert for the explanation.
As I indicated in my previous message, I would have been ready to revert my
commit but it seems Stephan fixed the whole thing, see
https://gerrit.libreoffice.org/gitweb?p=core.git;a=commitdiff;h=b6ff19fba3a1a6d65134539a71d7a8df0e35d4ff.
Julien
PS : I thought I had found something useful but I must definitely forget
about {0} initialization since it must be used far more carefully than I
expected :-)
--
View this message in context: http://nabble.documentfoundation.org/Re-Libreoffice-commits-core-git-desktop-source-tp4038892p4039132.html
Sent from the Dev mailing list archive at Nabble.com.
More information about the LibreOffice
mailing list