[Libreoffice-commits] core.git: 3 commits - vcl/source

Michael Stahl mstahl at redhat.com
Thu Jun 2 13:41:33 UTC 2016


 vcl/source/filter/igif/gifread.cxx |    2 
 vcl/source/filter/sgvmain.cxx      |  352 ++++++++++++++++++++++---------------
 vcl/source/filter/sgvmain.hxx      |    1 
 3 files changed, 217 insertions(+), 138 deletions(-)

New commits:
commit f6ed2305abb0289ad51605ceeaee607a0bc8d7bd
Author: Michael Stahl <mstahl at redhat.com>
Date:   Thu Jun 2 14:11:40 2016 +0200

    vcl: GIF import: don't use __LP64__ to check for a 64-bit system
    
    __LP64__ is not defined in MSVC AMD64 builds, since it doesn't have
    64-bit longs.  This caused the vcl_filters_test to fail because loading
    the file for which that check is a work-around succeeded.
    
    Change-Id: I4df48d4b196a1d08e9bd5ef61b64ec63501037c9

diff --git a/vcl/source/filter/igif/gifread.cxx b/vcl/source/filter/igif/gifread.cxx
index aac672f..f008b1b 100644
--- a/vcl/source/filter/igif/gifread.cxx
+++ b/vcl/source/filter/igif/gifread.cxx
@@ -172,7 +172,7 @@ void GIFReader::CreateBitmaps( long nWidth, long nHeight, BitmapPalette* pPal,
 {
     const Size aSize( nWidth, nHeight );
 
-#ifdef __LP64__
+#if SAL_TYPES_SIZEOFPOINTER == 8
     // Don't bother allocating a bitmap of a size that would fail on a
     // 32-bit system. We have at least one unit tests that is expected
     // to fail (loading a 65535*65535 size GIF
commit e144eeb1ca868e93f5a69ca14a12b036def45980
Author: Michael Stahl <mstahl at redhat.com>
Date:   Thu Jun 2 13:31:41 2016 +0200

    vcl: remove pointless check
    
    This would have been more useful if it checked one of the other types
    that use inheritance. It would also be more useful if it actually did
    something to report the issue instead of silently reporting success.
    
    Change-Id: I684146244d4eec15669b499e40214b8ede70741f

diff --git a/vcl/source/filter/sgvmain.cxx b/vcl/source/filter/sgvmain.cxx
index 73a3b0d..bdae296 100644
--- a/vcl/source/filter/sgvmain.cxx
+++ b/vcl/source/filter/sgvmain.cxx
@@ -914,10 +914,6 @@ bool SgfFilterSDrw( SvStream& rInp, SgfHeader&, SgfEntry&, GDIMetaFile& rMtf )
 
 bool SgfSDrwFilter(SvStream& rInp, GDIMetaFile& rMtf, const INetURLObject& _aIniPath )
 {
-#if OSL_DEBUG_LEVEL > 1 // check record size. New compiler possibly aligns different!
-    if (sizeof(ObjTextType)!=ObjTextTypeSize)  return false;
-#endif
-
     sal_uLong   nFileStart;        // offset of SgfHeaders. In general 0.
     SgfHeader   aHead;
     SgfEntry    aEntr;
commit af8509fa194e6747c82a9df9a1c465be82a32637
Author: Michael Stahl <mstahl at redhat.com>
Date:   Thu Jun 2 12:54:36 2016 +0200

    vcl: fix "sgv" import filter on 64-bit MSVC
    
    This filter reads entire structs at a time from the SvStream, including
    structs that are derived from other structs.  This happens to work fine
    with GCC by chance, but MSVC AMD64 by default aligns structs to 8 bytes,
    and that means if sizeof(super-stuct) = 20 then 4 bytes of padding are
    inserted and that ruins the import.
    
    This causes vcl_filters_test to go into an infinite loop reading
    SaveAsPicture.sgv.
    
    Fix this by reading each member of the structs separately, which also
    means that the filter doesn't need to byte-swap every member on
    big-endian platforms since SvStream methods already do that.
    
    Change-Id: I237725dbcde5232006728179e645776fcb79cac3

diff --git a/vcl/source/filter/sgvmain.cxx b/vcl/source/filter/sgvmain.cxx
index 18e2d2c..73a3b0d 100644
--- a/vcl/source/filter/sgvmain.cxx
+++ b/vcl/source/filter/sgvmain.cxx
@@ -35,52 +35,6 @@
     p.x=OSL_SWAPWORD(p.x); \
     p.y=OSL_SWAPWORD(p.y); }
 
-#define SWAPPAGE(p) {                         \
-    p.Next   =OSL_SWAPDWORD (p.Next   );           \
-    p.nList  =OSL_SWAPDWORD (p.nList  );           \
-    p.ListEnd=OSL_SWAPDWORD (p.ListEnd);           \
-    p.Paper.Size.x=OSL_SWAPWORD(p.Paper.Size.x); \
-    p.Paper.Size.y=OSL_SWAPWORD(p.Paper.Size.y); \
-    p.Paper.RandL =OSL_SWAPWORD(p.Paper.RandL ); \
-    p.Paper.RandR =OSL_SWAPWORD(p.Paper.RandR ); \
-    p.Paper.RandO =OSL_SWAPWORD(p.Paper.RandO ); \
-    p.Paper.RandU =OSL_SWAPWORD(p.Paper.RandU ); \
-    SWAPPOINT(p.U);                           \
-    sal_uInt16 iTemp;                             \
-    for (iTemp=0;iTemp<20;iTemp++) {          \
-        rPage.HlpLnH[iTemp]=OSL_SWAPWORD(rPage.HlpLnH[iTemp]);       \
-        rPage.HlpLnV[iTemp]=OSL_SWAPWORD(rPage.HlpLnV[iTemp]);      }}
-
-#define SWAPOBJK(o) {                 \
-    o.Last    =OSL_SWAPDWORD (o.Last    ); \
-    o.Next    =OSL_SWAPDWORD (o.Next    ); \
-    o.MemSize =OSL_SWAPWORD(o.MemSize ); \
-    SWAPPOINT(o.ObjMin);              \
-    SWAPPOINT(o.ObjMax);              }
-
-#define SWAPLINE(l) {             \
-    l.LMSize=OSL_SWAPWORD(l.LMSize); \
-    l.LDicke=OSL_SWAPWORD(l.LDicke); }
-
-#define SWAPAREA(a) {               \
-    a.FDummy2=OSL_SWAPWORD(a.FDummy2); \
-    a.FMuster=OSL_SWAPWORD(a.FMuster); }
-
-#define SWAPTEXT(t) {               \
-    SWAPLINE(t.L);                  \
-    SWAPAREA(t.F);                  \
-    t.FontLo =OSL_SWAPWORD(t.FontLo ); \
-    t.FontHi =OSL_SWAPWORD(t.FontHi ); \
-    t.Grad   =OSL_SWAPWORD(t.Grad   ); \
-    t.Breite =OSL_SWAPWORD(t.Breite ); \
-    t.Schnitt=OSL_SWAPWORD(t.Schnitt); \
-    t.LnFeed =OSL_SWAPWORD(t.LnFeed ); \
-    t.Slant  =OSL_SWAPWORD(t.Slant  ); \
-    SWAPLINE(t.ShdL);               \
-    SWAPAREA(t.ShdF);               \
-    SWAPPOINT(t.ShdVers);           \
-    SWAPAREA(t.BackF);              }
-
 #endif
 
 //  Restrictions:
@@ -148,13 +102,63 @@ PageType::PageType()
 
 SvStream& ReadPageType(SvStream& rIStream, PageType& rPage)
 {
-    rIStream.Read(&rPage.Next, PageSize);
-#if defined OSL_BIGENDIAN
-    SWAPPAGE(rPage);
-#endif
+    sal_uInt64 const nOldPos(rIStream.Tell());
+    rIStream.ReadUInt32(rPage.Next);
+    rIStream.ReadUInt32(rPage.nList);
+    rIStream.ReadUInt32(rPage.ListEnd);
+    rIStream.ReadInt16(rPage.Paper.Size.x);
+    rIStream.ReadInt16(rPage.Paper.Size.y);
+    rIStream.ReadInt16(rPage.Paper.RandL);
+    rIStream.ReadInt16(rPage.Paper.RandR);
+    rIStream.ReadInt16(rPage.Paper.RandO);
+    rIStream.ReadInt16(rPage.Paper.RandU);
+    rIStream.ReadUChar(rPage.Paper.PColor);
+    rIStream.ReadUChar(rPage.Paper.PIntens);
+    rIStream.ReadCharAsBool(rPage.BorderClip);
+    rIStream.ReadUChar(rPage.StdPg);
+    rIStream.ReadInt16(rPage.U.x);
+    rIStream.ReadInt16(rPage.U.y);
+    for (int i = 0; i < 20; ++i)
+    {
+        rIStream.ReadInt16(rPage.HlpLnH[i]);
+    }
+    for (int i = 0; i < 20; ++i)
+    {
+        rIStream.ReadInt16(rPage.HlpLnV[i]);
+    }
+    rIStream.ReadUChar(rPage.LnAnzH);
+    rIStream.ReadUChar(rPage.LnAnzV);
+    for (int i = 0; i < 32; ++i)
+    {
+        rIStream.ReadUChar(rPage.PgName[i]);
+    }
+    assert(rIStream.GetError() || rIStream.Tell() == nOldPos + PageSize);
+    (void) nOldPos;
     return rIStream;
 }
 
+void ReadObjLineType(SvStream & rInp, ObjLineType & rLine)
+{
+    // reads 8 bytes
+    rInp.ReadUChar(rLine.LFarbe);
+    rInp.ReadUChar(rLine.LBFarbe);
+    rInp.ReadUChar(rLine.LIntens);
+    rInp.ReadUChar(rLine.LMuster);
+    rInp.ReadInt16(rLine.LMSize);
+    rInp.ReadInt16(rLine.LDicke);
+}
+
+void ReadObjAreaType(SvStream & rInp, ObjAreaType & rArea)
+{
+    // reads 8 bytes
+    rInp.ReadUChar(rArea.FFarbe);
+    rInp.ReadUChar(rArea.FBFarbe);
+    rInp.ReadUChar(rArea.FIntens);
+    rInp.ReadUChar(rArea.FDummy1);
+    rInp.ReadInt16(rArea.FDummy2);
+    rInp.ReadUInt16(rArea.FMuster);
+}
+
 void ObjkOverSeek(SvStream& rInp, ObjkType& rObjk)
 {
     sal_uLong Siz;
@@ -162,123 +166,203 @@ void ObjkOverSeek(SvStream& rInp, ObjkType& rObjk)
     rInp.Seek(rInp.Tell()+Siz);
 }
 
-SvStream& ReadObjkType(SvStream& rInp, ObjkType& rObjk)
+SvStream& ReadObjkType(SvStream& rInp, ObjkType& rObjk, bool const isRewind = true)
 {
     // fileposition in stream is not changed!
-    sal_uLong nPos;
-    nPos=rInp.Tell();
-    rInp.Read(&rObjk.Last, ObjkSize);
-#if defined OSL_BIGENDIAN
-    SWAPOBJK(rObjk);
-#endif
-    rInp.Seek(nPos);
+    sal_uInt64 const nOldPos = rInp.Tell();
+    rInp.ReadUInt32(rObjk.Last);
+    rInp.ReadUInt32(rObjk.Next);
+    rInp.ReadUInt16(rObjk.MemSize);
+    rInp.ReadInt16(rObjk.ObjMin.x);
+    rInp.ReadInt16(rObjk.ObjMin.y);
+    rInp.ReadInt16(rObjk.ObjMax.x);
+    rInp.ReadInt16(rObjk.ObjMax.y);
+    rInp.ReadUChar(rObjk.Art);
+    rInp.ReadUChar(rObjk.Layer);
+    assert(rInp.GetError() || rInp.Tell() == nOldPos + ObjkSize);
+    if (isRewind)
+        rInp.Seek(nOldPos);
     return rInp;
 }
 SvStream& ReadStrkType(SvStream& rInp, StrkType& rStrk)
 {
-    rInp.Read(&rStrk.Last, StrkSize);
-#if defined OSL_BIGENDIAN
-    SWAPOBJK (rStrk);
-    SWAPLINE (rStrk.L);
-    SWAPPOINT(rStrk.Pos1);
-    SWAPPOINT(rStrk.Pos2);
-#endif
+    sal_uInt64 const nOldPos(rInp.Tell());
+    ReadObjkType(rInp, rStrk, false);
+    rInp.ReadUChar(rStrk.Flags);
+    rInp.ReadUChar(rStrk.LEnden);
+    ReadObjLineType(rInp, rStrk.L);
+    rInp.ReadInt16(rStrk.Pos1.x);
+    rInp.ReadInt16(rStrk.Pos1.y);
+    rInp.ReadInt16(rStrk.Pos2.x);
+    rInp.ReadInt16(rStrk.Pos2.y);
+    assert(rInp.GetError() || rInp.Tell() == nOldPos + StrkSize);
+    (void) nOldPos;
     return rInp;
 }
 SvStream& ReadRectType(SvStream& rInp, RectType& rRect)
 {
-    rInp.Read(&rRect.Last, RectSize);
-#if defined OSL_BIGENDIAN
-    SWAPOBJK (rRect);
-    SWAPLINE (rRect.L);
-    SWAPAREA (rRect.F);
-    SWAPPOINT(rRect.Pos1);
-    SWAPPOINT(rRect.Pos2);
-    rRect.Radius        = OSL_SWAPWORD(rRect.Radius  );
-    rRect.RotationAngle = OSL_SWAPWORD(rRect.RotationAngle);
-    rRect.Slant         = OSL_SWAPWORD(rRect.Slant   );
-#endif
+    sal_uInt64 const nOldPos(rInp.Tell());
+    ReadObjkType(rInp, rRect, false);
+    rInp.ReadUChar(rRect.Flags);
+    rInp.ReadUChar(rRect.Reserve);
+    ReadObjLineType(rInp, rRect.L);
+    ReadObjAreaType(rInp, rRect.F);
+    rInp.ReadInt16(rRect.Pos1.x);
+    rInp.ReadInt16(rRect.Pos1.y);
+    rInp.ReadInt16(rRect.Pos2.x);
+    rInp.ReadInt16(rRect.Pos2.y);
+    rInp.ReadInt16(rRect.Radius);
+    rInp.ReadUInt16(rRect.RotationAngle);
+    rInp.ReadUInt16(rRect.Slant);
+    assert(rInp.GetError() || rInp.Tell() == nOldPos + RectSize);
+    (void) nOldPos;
     return rInp;
 }
 SvStream& ReadPolyType(SvStream& rInp, PolyType& rPoly)
 {
-    rInp.Read(&rPoly.Last, PolySize);
-#if defined OSL_BIGENDIAN
-    SWAPOBJK (rPoly);
-    SWAPLINE (rPoly.L);
-    SWAPAREA (rPoly.F);
-#endif
+    sal_uInt64 const nOldPos(rInp.Tell());
+    ReadObjkType(rInp, rPoly, false);
+    rInp.ReadUChar(rPoly.Flags);
+    rInp.ReadUChar(rPoly.LEnden);
+    ReadObjLineType(rInp, rPoly.L);
+    ReadObjAreaType(rInp, rPoly.F);
+    rInp.ReadUChar(rPoly.nPoints);
+    rInp.ReadUChar(rPoly.Reserve);
+    rInp.ReadUInt32(rPoly.SD_EckP);
+    assert(rInp.GetError() || rInp.Tell() == nOldPos + PolySize);
+    (void) nOldPos;
     return rInp;
 }
+
 SvStream& ReadSplnType(SvStream& rInp, SplnType& rSpln)
 {
-    rInp.Read(&rSpln.Last, SplnSize);
-#if defined OSL_BIGENDIAN
-    SWAPOBJK (rSpln);
-    SWAPLINE (rSpln.L);
-    SWAPAREA (rSpln.F);
-#endif
+    sal_uInt64 const nOldPos(rInp.Tell());
+    ReadObjkType(rInp, rSpln, false);
+    rInp.ReadUChar(rSpln.Flags);
+    rInp.ReadUChar(rSpln.LEnden);
+    ReadObjLineType(rInp, rSpln.L);
+    ReadObjAreaType(rInp, rSpln.F);
+    rInp.ReadUChar(rSpln.nPoints);
+    rInp.ReadUChar(rSpln.Reserve);
+    rInp.ReadUInt32(rSpln.SD_EckP);
+    assert(rInp.GetError() || rInp.Tell() == nOldPos + SplnSize);
+    (void) nOldPos;
     return rInp;
 }
 SvStream& ReadCircType(SvStream& rInp, CircType& rCirc)
 {
-    rInp.Read(&rCirc.Last, CircSize);
-#if defined OSL_BIGENDIAN
-    SWAPOBJK (rCirc);
-    SWAPLINE (rCirc.L);
-    SWAPAREA (rCirc.F);
-    SWAPPOINT(rCirc.Radius);
-    SWAPPOINT(rCirc.Center);
-    rCirc.RotationAngle = OSL_SWAPWORD(rCirc.RotationAngle );
-    rCirc.StartAngle     = OSL_SWAPWORD(rCirc.StartAngle);
-    rCirc.RelAngle       = OSL_SWAPWORD(rCirc.RelAngle  );
-#endif
+    sal_uInt64 const nOldPos(rInp.Tell());
+    ReadObjkType(rInp, rCirc, false);
+    rInp.ReadUChar(rCirc.Flags);
+    rInp.ReadUChar(rCirc.LEnden);
+    ReadObjLineType(rInp, rCirc.L);
+    ReadObjAreaType(rInp, rCirc.F);
+    rInp.ReadInt16(rCirc.Center.x);
+    rInp.ReadInt16(rCirc.Center.y);
+    rInp.ReadInt16(rCirc.Radius.x);
+    rInp.ReadInt16(rCirc.Radius.y);
+    rInp.ReadUInt16(rCirc.RotationAngle);
+    rInp.ReadUInt16(rCirc.StartAngle);
+    rInp.ReadUInt16(rCirc.RelAngle);
+    assert(rInp.GetError() || rInp.Tell() == nOldPos + CircSize);
+    (void) nOldPos;
     return rInp;
 }
 SvStream& ReadTextType(SvStream& rInp, TextType& rText)
 {
-    rInp.Read(&rText.Last, TextSize);
-#if defined OSL_BIGENDIAN
-    SWAPOBJK (rText);
-    SWAPTEXT (rText.T);
-    SWAPPOINT(rText.Pos1);
-    SWAPPOINT(rText.Pos2);
-    rText.TopOfs        = OSL_SWAPWORD(rText.TopOfs  );
-    rText.RotationAngle = OSL_SWAPWORD(rText.RotationAngle);
-    rText.BoxSlant      = OSL_SWAPWORD(rText.BoxSlant);
-    rText.BufSize       = OSL_SWAPWORD(rText.BufSize );
-    SWAPPOINT(rText.FitSize);
-    rText.FitBreit      = OSL_SWAPWORD(rText.FitBreit);
-#endif
+    sal_uInt64 const nOldPos(rInp.Tell());
+    ReadObjkType(rInp, rText, false);
+    rInp.ReadUChar(rText.Flags);
+    rInp.ReadUChar(rText.Reserve);
+    ReadObjLineType(rInp, rText.T.L);
+    ReadObjAreaType(rInp, rText.T.F);
+    rInp.ReadUInt16(rText.T.FontLo);
+    rInp.ReadUInt16(rText.T.FontHi);
+    rInp.ReadUInt16(rText.T.Grad);
+    rInp.ReadUInt16(rText.T.Breite);
+    rInp.ReadUChar(rText.T.Justify);
+    rInp.ReadUChar(rText.T.Kapit);
+    rInp.ReadUInt16(rText.T.Schnitt);
+    rInp.ReadUInt16(rText.T.LnFeed);
+    rInp.ReadUInt16(rText.T.Slant);
+    rInp.ReadUChar(rText.T.ZAbst);
+    rInp.ReadSChar(rText.T.ChrVPos);
+    ReadObjLineType(rInp, rText.T.ShdL);
+    ReadObjAreaType(rInp, rText.T.ShdF);
+    rInp.ReadInt16(rText.T.ShdVers.x);
+    rInp.ReadInt16(rText.T.ShdVers.y);
+    rInp.ReadCharAsBool(rText.T.ShdAbs);
+    rInp.ReadCharAsBool(rText.T.NoSpc);
+    ReadObjAreaType(rInp, rText.T.BackF);
+    rInp.ReadInt16(rText.Pos1.x);
+    rInp.ReadInt16(rText.Pos1.y);
+    rInp.ReadInt16(rText.Pos2.x);
+    rInp.ReadInt16(rText.Pos2.y);
+    rInp.ReadInt16(rText.TopOfs);
+    rInp.ReadUInt16(rText.RotationAngle);
+    rInp.ReadUInt16(rText.BoxSlant);
+    rInp.ReadUInt16(rText.BufSize);
+    rInp.ReadUInt16(rText.BufLo);
+    rInp.ReadUInt16(rText.BufHi);
+    rInp.ReadUInt16(rText.ExtLo);
+    rInp.ReadUInt16(rText.ExtHi);
+    rInp.ReadInt16(rText.FitSize.x);
+    rInp.ReadInt16(rText.FitSize.y);
+    rInp.ReadInt16(rText.FitBreit);
+    assert(rInp.GetError() || rInp.Tell() == nOldPos + TextSize);
+    (void) nOldPos;
     rText.Buffer=nullptr;
     return rInp;
 }
 SvStream& ReadBmapType(SvStream& rInp, BmapType& rBmap)
 {
-    rInp.Read(&rBmap.Last, BmapSize);
-#if defined OSL_BIGENDIAN
-    SWAPOBJK (rBmap);
-    SWAPAREA (rBmap.F);
-    SWAPPOINT(rBmap.Pos1);
-    SWAPPOINT(rBmap.Pos2);
-    rBmap.RotationAngle = OSL_SWAPWORD(rBmap.RotationAngle);
-    rBmap.Slant         = OSL_SWAPWORD(rBmap.Slant   );
-    SWAPPOINT(rBmap.PixSize);
-#endif
+    sal_uInt64 const nOldPos(rInp.Tell());
+    ReadObjkType(rInp, rBmap, false);
+    rInp.ReadUChar(rBmap.Flags);
+    rInp.ReadUChar(rBmap.Reserve);
+    ReadObjAreaType(rInp, rBmap.F);
+    rInp.ReadInt16(rBmap.Pos1.x);
+    rInp.ReadInt16(rBmap.Pos1.y);
+    rInp.ReadInt16(rBmap.Pos2.x);
+    rInp.ReadInt16(rBmap.Pos2.y);
+    rInp.ReadUInt16(rBmap.RotationAngle);
+    rInp.ReadUInt16(rBmap.Slant);
+    for (int i = 0; i < 80; ++i)
+    {
+        rInp.ReadUChar(rBmap.Filename[i]);
+    }
+    rInp.ReadInt16(rBmap.PixSize.x);
+    rInp.ReadInt16(rBmap.PixSize.y);
+    static_assert(sizeof(enum GrafStat) == 4, "enum has unexpected size");
+    sal_uInt32 nTemp(0);
+    rInp.ReadUInt32(nTemp);
+    rBmap.Format = static_cast<GrafStat>(nTemp);
+    rInp.ReadUChar(rBmap.nPlanes);
+    rInp.ReadCharAsBool(rBmap.RawOut);
+    rInp.ReadCharAsBool(rBmap.InvOut);
+    rInp.ReadCharAsBool(rBmap.LightOut);
+    rInp.ReadUChar(rBmap.GrfFlg);
+    assert(rInp.GetError() || rInp.Tell() == nOldPos + BmapSize);
+    (void) nOldPos;
     return rInp;
 }
 SvStream& ReadGrupType(SvStream& rInp, GrupType& rGrup)
 {
-    rInp.Read(&rGrup.Last, GrupSize);
-#if defined OSL_BIGENDIAN
-    SWAPOBJK (rGrup);
-    rGrup.SbLo     =OSL_SWAPWORD(rGrup.SbLo     );
-    rGrup.SbHi     =OSL_SWAPWORD(rGrup.SbHi     );
-    rGrup.UpLo     =OSL_SWAPWORD(rGrup.UpLo     );
-    rGrup.UpHi     =OSL_SWAPWORD(rGrup.UpHi     );
-    rGrup.ChartSize=OSL_SWAPWORD(rGrup.ChartSize);
-    rGrup.ChartPtr =OSL_SWAPDWORD (rGrup.ChartPtr );
-#endif
+    sal_uInt64 const nOldPos(rInp.Tell());
+    ReadObjkType(rInp, rGrup, false);
+    rInp.ReadUChar(rGrup.Flags);
+    for (int i = 0; i < 13; ++i)
+    {
+        rInp.ReadUChar(rGrup.Name[i]);
+    }
+    rInp.ReadUInt16(rGrup.SbLo);
+    rInp.ReadUInt16(rGrup.SbHi);
+    rInp.ReadUInt16(rGrup.UpLo);
+    rInp.ReadUInt16(rGrup.UpHi);
+    rInp.ReadUInt16(rGrup.ChartSize);
+    rInp.ReadUInt32(rGrup.ChartPtr);
+    assert(rInp.GetError() || rInp.Tell() == nOldPos + GrupSize);
+    (void) nOldPos;
     return rInp;
 }
 
diff --git a/vcl/source/filter/sgvmain.hxx b/vcl/source/filter/sgvmain.hxx
index 7b3140c..08450f1 100644
--- a/vcl/source/filter/sgvmain.hxx
+++ b/vcl/source/filter/sgvmain.hxx
@@ -155,7 +155,6 @@ public:
     {
     }
     virtual ~ObjkType() {}
-    friend SvStream& ReadObjkType(SvStream& rIStream, ObjkType& rObjk);
     virtual void Draw(OutputDevice& rOut);
 };
 


More information about the Libreoffice-commits mailing list