[Libreoffice-commits] core.git: desktop/source
Matteo Casalin
matteo.casalin at gmx.com
Wed Feb 20 06:34:06 PST 2013
On Wed, 20 Feb 2013 15:32:10 +0100
Matteo Casalin <matteo.casalin at gmx.com> wrote:
> Hi all,
> I may be completely wrong and I really don't know this code and what it is aimet to, but I'm worried that
>
> if (nBytes > 0)
> {
> pReceiveBuffer[nBytes-1] = 0;
> }
>
> overwrites a received character (that could be '\0' or not).
>
> If I understand correctly, the target is to have the sequence of characters being '\0' terminated whether that '\0' whas in the stream or not, and then I would say that the whole routine should be something like:
>
> char pReceiveBuffer[sc_nCSASeqLength + 1] = {0};
As an additional thought, this could then be :
char pReceiveBuffer[sc_nCSASeqLength + 1];
> int nResult = 0;
> int nBytes = 0;
> // read byte per byte
> while ((nResult=aStreamPipe.recv( pReceiveBuffer+nBytes, sc_nCSASeqLength-nBytes))>0)
> {
> nBytes += nResult;
> if (pReceiveBuffer[nBytes-1]=='\0')
> {
> break;
> }
> }
> // unconditionally end stream with '\0'
> pReceiveBuffer[nBytes] = '\0';
>
> In case a '\0' is already in the sequence and the additional '\0' is undesired, nBytes can be adjusted in the "if (pReceiveBuffer[nBytes-1]=='\0')" so to overwrite the existing one.
> Also, the "read byte per byte" comment looks wrong to me.
>
> If I misunderstood the point then apologies for the noise.
> Cheers
>
> Matteo
>
>
>
> On Wed, 20 Feb 2013 05:54:50 -0800 (PST)
> julien2412 <serval2412 at yahoo.fr> wrote:
>
> > Lubos Lunak wrote
> > > On Tuesday 19 of February 2013, Julien Nabet wrote:
> > >> diff --git a/desktop/source/app/officeipcthread.cxx
> > >> b/desktop/source/app/officeipcthread.cxx index 8db7946..445ccb4 100644
> > >> --- a/desktop/source/app/officeipcthread.cxx
> > >> +++ b/desktop/source/app/officeipcthread.cxx
> > >> @@ -497,23 +497,17 @@ OfficeIPCThread::Status
> > >> OfficeIPCThread::EnableOfficeIPCThread() else if( pThread->maPipe.create(
> > >> aPipeIdent.getStr(), osl_Pipe_OPEN, rSecurity )) // Creation not
> > >> successfull, now we try to connect {
> > >> osl::StreamPipe aStreamPipe(pThread->maPipe.getHandle());
> > >> - char pReceiveBuffer[sc_nCSASeqLength + 1];
> > >> + char pReceiveBuffer[sc_nCSASeqLength + 1] = {0};
> > >> int nResult = 0;
> > >> int nBytes = 0;
> > >> int nBufSz = sc_nCSASeqLength + 1;
> > >> // read byte per byte
> > >> - pReceiveBuffer[0] = 0;
> > >> while ((nResult=aStreamPipe.recv( pReceiveBuffer+nBytes,
> > >> nBufSz-nBytes))>0) { nBytes += nResult;
> > >> if (pReceiveBuffer[nBytes-1]=='\0') {
> > >> break;
> > >> }
> > >> }
> > >> - /* make sure the buffer is \0 terminated */
> > >> - if (nBytes > 0)
> > >> - {
> > >> - pReceiveBuffer[nBytes-1] = 0;
> > >> - }
> > > Did you really mean to remove this part?
> >
> > Hi Lubos,
> >
> > 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?
> >
> > Of course, if my commit is wrong, I'll revert it after my day time job
> >
> > Julien
> >
> >
> >
> > --
> > View this message in context: http://nabble.documentfoundation.org/Re-Libreoffice-commits-core-git-desktop-source-tp4038892p4038893.html
> > Sent from the Dev mailing list archive at Nabble.com.
> > _______________________________________________
> > LibreOffice mailing list
> > LibreOffice at lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/libreoffice
> _______________________________________________
> LibreOffice mailing list
> LibreOffice at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/libreoffice
More information about the LibreOffice
mailing list