El dimecres, 23 de maig de 2018, a les 8:57:27 CEST, Adam Reichold va escriure: > Hello, > > maybe the simplest solution would to turn inputBuf into an unsigned int > and convert to signed int after extracting the bits out of it?
Yeah that sounds like a plan, could you try to produce a patch so i can run it through regtest? Cheers, Albert > > Best regards, > Adam > > Am 23.05.2018 um 00:24 schrieb Albert Astals Cid: > > poppler/Stream.cc | 4 +--- > > 1 file changed, 1 insertion(+), 3 deletions(-) > > > > New commits: > > commit 58e056c4b15f262b7715f8061d6885eb80044d0d > > Author: Albert Astals Cid <aa...@kde.org> > > Date: Wed May 23 00:23:19 2018 +0200 > > > > Revert 31c3832b996acbf04ea833e304d7d21ac4533a57 > > > > So shifting left negative values is undefined behaviour according to > > the > > spec but if we don't do it we break, so we seem to be depending on > > this > > undefined behaviour, will try to figure out a better fix > > > > diff --git a/poppler/Stream.cc b/poppler/Stream.cc > > index b6bfd838..4f075c12 100644 > > --- a/poppler/Stream.cc > > +++ b/poppler/Stream.cc > > @@ -1445,9 +1445,7 @@ int LZWStream::getCode() { > > > > while (inputBits < nextBits) { > > > > if ((c = str->getChar()) == EOF) > > > > return EOF; > > > > - if (likely(inputBuf >= 0)) { > > - inputBuf = (inputBuf << 8) | (c & 0xff); > > - } > > + inputBuf = (inputBuf << 8) | (c & 0xff); > > > > inputBits += 8; > > > > } > > code = (inputBuf >> (inputBits - nextBits)) & ((1 << nextBits) - 1); > > > > _______________________________________________ > > poppler mailing list > > poppler@lists.freedesktop.org > > https://lists.freedesktop.org/mailman/listinfo/poppler _______________________________________________ poppler mailing list poppler@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/poppler