[Libreoffice-commits] core.git: 6 commits - lotuswordpro/source

2020-06-12 Thread David Tardon (via logerrit)
 lotuswordpro/source/filter/lwpdoc.cxx |   16 
 lotuswordpro/source/filter/lwpfoundry.cxx |1 -
 lotuswordpro/source/filter/lwpframelayout.cxx |2 +-
 lotuswordpro/source/filter/lwptablelayout.cxx |3 +--
 lotuswordpro/source/filter/lwptabrack.cxx |3 +--
 5 files changed, 11 insertions(+), 14 deletions(-)

New commits:
commit 05664c6ffae062a19ff3aa3e0949354d2586919d
Author: David Tardon 
AuthorDate: Fri Jun 12 17:01:40 2020 +0200
Commit: David Tardon 
CommitDate: Fri Jun 12 19:05:09 2020 +0200

return directly

Change-Id: Ia5ebadfd825b0cbd106893f0b7b25e28b878dfeb

diff --git a/lotuswordpro/source/filter/lwptabrack.cxx 
b/lotuswordpro/source/filter/lwptabrack.cxx
index 84a80decd93b..3aea3905e653 100644
--- a/lotuswordpro/source/filter/lwptabrack.cxx
+++ b/lotuswordpro/source/filter/lwptabrack.cxx
@@ -118,8 +118,7 @@ LwpTab* LwpTabRack::Lookup(sal_uInt16 nIndex)
 
 LwpTabRack* LwpTabRack::GetNext()
 {
-LwpTabRack* pTabRack = dynamic_cast(m_NextID.obj().get());
-return pTabRack;
+return dynamic_cast(m_NextID.obj().get());
 }
 
 sal_uInt16 LwpTabRack::GetNumTabs()
commit 0bc6b243746837433713804b430f7ade44b9c8c0
Author: David Tardon 
AuthorDate: Fri Jun 12 17:00:34 2020 +0200
Commit: David Tardon 
CommitDate: Fri Jun 12 19:05:09 2020 +0200

return directly

Change-Id: I727a34213fef5adefdc6c1a046d47a7f37cfdcd0

diff --git a/lotuswordpro/source/filter/lwptablelayout.cxx 
b/lotuswordpro/source/filter/lwptablelayout.cxx
index fbfc35174dd7..95aaf13715fc 100644
--- a/lotuswordpro/source/filter/lwptablelayout.cxx
+++ b/lotuswordpro/source/filter/lwptablelayout.cxx
@@ -514,8 +514,7 @@ LwpSuperTableLayout * LwpTableLayout::GetSuperTableLayout()
  */
 LwpTable *  LwpTableLayout::GetTable()
 {
-LwpTable *pTable = dynamic_cast(m_Content.obj().get());
-return pTable;
+return dynamic_cast(m_Content.obj().get());
 }
 /**
  * @short   Get column style name by column ID
commit 06248bbaf21723f505d99c65906e5c6781c54c83
Author: David Tardon 
AuthorDate: Fri Jun 12 16:41:07 2020 +0200
Commit: David Tardon 
CommitDate: Fri Jun 12 19:05:08 2020 +0200

use dynamic_cast

Change-Id: Iac420c2dd37be392ae817e0433de68c983546667

diff --git a/lotuswordpro/source/filter/lwpframelayout.cxx 
b/lotuswordpro/source/filter/lwpframelayout.cxx
index 01be3544108d..feb6f76266f1 100644
--- a/lotuswordpro/source/filter/lwpframelayout.cxx
+++ b/lotuswordpro/source/filter/lwpframelayout.cxx
@@ -1166,7 +1166,7 @@ void LwpDropcapLayout::XFConvert(XFContentContainer* 
pCont)
 
 void LwpDropcapLayout::RegisterStyle(LwpFoundry* pFoundry)
 {
-LwpStory* pStory = static_cast(m_Content.obj(VO_STORY).get());
+LwpStory* pStory = dynamic_cast(m_Content.obj(VO_STORY).get());
 if (pStory)
 {
 pStory->SetDropcapFlag(true);
commit 9dfa1d2f9fd94b5a8d25c8dccb2bd674886a12ba
Author: David Tardon 
AuthorDate: Fri Jun 12 16:36:06 2020 +0200
Commit: David Tardon 
CommitDate: Fri Jun 12 19:05:08 2020 +0200

drop misleading comment

Change-Id: I2ae4b9dbcf3134ec5301d14c32d6904817d350fb

diff --git a/lotuswordpro/source/filter/lwpfoundry.cxx 
b/lotuswordpro/source/filter/lwpfoundry.cxx
index 2a17efbe8ae2..d18dcd3903b6 100644
--- a/lotuswordpro/source/filter/lwpfoundry.cxx
+++ b/lotuswordpro/source/filter/lwpfoundry.cxx
@@ -266,7 +266,6 @@ LwpObjectID * LwpFoundry::GetDefaultTextStyle()
 */
 LwpObjectID * LwpFoundry::FindParaStyleByName(const OUString& name)
 {
-//Register all text styles: para styles, character styles
 LwpDLVListHeadHolder* pParaStyleHolder = 
dynamic_cast(GetTextStyleHead().obj().get());
 if(pParaStyleHolder)
 {
commit d65d11343d975cc4e278deca54d166aeff0aa850
Author: David Tardon 
AuthorDate: Fri Jun 12 16:30:40 2020 +0200
Commit: David Tardon 
CommitDate: Fri Jun 12 19:05:08 2020 +0200

rename variable

Change-Id: I24e0902998420685656a350cb849a19d8c7a8a35

diff --git a/lotuswordpro/source/filter/lwpdoc.cxx 
b/lotuswordpro/source/filter/lwpdoc.cxx
index 8aab1b5fb68e..7dc59e13e75a 100644
--- a/lotuswordpro/source/filter/lwpdoc.cxx
+++ b/lotuswordpro/source/filter/lwpdoc.cxx
@@ -231,19 +231,19 @@ void LwpDocument::RegisterStyle()
 void LwpDocument::RegisterTextStyles()
 {
 //Register all text styles: para styles, character styles
-LwpDLVListHeadHolder* pParaStyleHolder = m_xOwnedFoundry
+LwpDLVListHeadHolder* pTextStyleHolder = m_xOwnedFoundry
 ? 
dynamic_cast(m_xOwnedFoundry->GetTextStyleHead().obj().get())
 : nullptr;
-if(pParaStyleHolder)
+if(pTextStyleHolder)
 {
-LwpTextStyle* pParaStyle = dynamic_cast 
(pParaStyleHolder->GetHeadID().obj().get());
-while(pParaStyle)
+LwpTextStyle* pTextStyle = dynamic_cast 
(pTextStyleHolder->GetHeadID().obj().get());
+while(pTextStyle)
 {
-if (pParaStyle->GetFoundry())
+if (pTextStyle->GetFoundry())
 thro

[Libreoffice-commits] core.git: 6 commits - lotuswordpro/source vcl/headless vcl/source vcl/unx xmloff/source

2016-01-21 Thread Caolán McNamara
 lotuswordpro/source/filter/lwpbackgroundstuff.cxx |2 
 lotuswordpro/source/filter/lwpcelllayout.cxx  |6 -
 lotuswordpro/source/filter/lwpdrawobj.cxx |   60 +-
 lotuswordpro/source/filter/lwpgrfobj.cxx  |   20 +++---
 lotuswordpro/source/filter/lwppagelayout.cxx  |   16 ++--
 lotuswordpro/source/filter/lwppara.cxx|   14 ++--
 lotuswordpro/source/filter/lwppara1.cxx   |8 +-
 lotuswordpro/source/filter/lwpsdwgrouploaderv0102.cxx |6 -
 lotuswordpro/source/filter/lwpsilverbullet.cxx|   14 ++--
 lotuswordpro/source/filter/lwpstory.cxx   |2 
 lotuswordpro/source/filter/lwptablelayout.cxx |4 -
 lotuswordpro/source/filter/xfilter/xfpagemaster.hxx   |2 
 vcl/headless/svpvd.cxx|1 
 vcl/source/filter/igif/gifread.cxx|   29 +++-
 vcl/source/filter/wmf/enhwmf.cxx  |6 -
 vcl/source/filter/wmf/winmtf.cxx  |   10 +--
 vcl/source/filter/wmf/winmtf.hxx  |2 
 vcl/source/filter/wmf/winwmf.cxx  |4 -
 vcl/source/outdev/transparent.cxx |6 -
 vcl/unx/generic/desktopdetect/desktopdetector.cxx |2 
 vcl/unx/gtk3/gtk3gtkinst.cxx  |   25 ++-
 xmloff/source/chart/SchXMLExport.cxx  |4 -
 22 files changed, 129 insertions(+), 114 deletions(-)

New commits:
commit f1358edf469e70df1fb044bb58cd888fea15173c
Author: Caolán McNamara 
Date:   Thu Jan 21 11:28:50 2016 +

Resolves: rhbz#1240591 gtk3: store clipboard when LibreOffice is closed

now contents copied to clipboard persist after LibreOffice exits

Change-Id: I4433543944fb9664f87ade43da1198dcdd4e2a7c

diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx
index f1a9ddc..a3f3068 100644
--- a/vcl/unx/gtk3/gtk3gtkinst.cxx
+++ b/vcl/unx/gtk3/gtk3gtkinst.cxx
@@ -13,12 +13,12 @@
 #include "com/sun/star/lang/XServiceInfo.hpp"
 #include "com/sun/star/lang/XSingleServiceFactory.hpp"
 #include "com/sun/star/lang/XInitialization.hpp"
-#include "com/sun/star/lang/DisposedException.hpp"
 #include "com/sun/star/datatransfer/XTransferable.hpp"
 #include "com/sun/star/datatransfer/clipboard/XClipboard.hpp"
 #include "com/sun/star/datatransfer/clipboard/XClipboardEx.hpp"
 #include "com/sun/star/datatransfer/clipboard/XClipboardNotifier.hpp"
 #include "com/sun/star/datatransfer/clipboard/XClipboardListener.hpp"
+#include "com/sun/star/datatransfer/clipboard/XFlushableClipboard.hpp"
 #include "com/sun/star/datatransfer/clipboard/XSystemClipboard.hpp"
 #include "com/sun/star/datatransfer/dnd/XDragSource.hpp"
 #include "com/sun/star/datatransfer/dnd/XDropTarget.hpp"
@@ -275,6 +275,7 @@ static void clipboard_owner_init(ClipboardOwner *)
 class VclGtkClipboard :
 public cppu::WeakComponentImplHelper<
 datatransfer::clipboard::XSystemClipboard,
+datatransfer::clipboard::XFlushableClipboard,
 XServiceInfo>
 {
 GdkAtom  m_nSelection;
@@ -326,6 +327,12 @@ public:
 throw(RuntimeException, std::exception) override;
 
 /*
+ * XFlushableClipboard
+ */
+virtual void SAL_CALL flushClipboard()
+throw(RuntimeException, std::exception) override;
+
+/*
  * XClipboardNotifier
  */
 virtual void SAL_CALL addClipboardListener(
@@ -502,7 +509,8 @@ namespace
 }
 
 VclGtkClipboard::VclGtkClipboard(GdkAtom nSelection)
-: cppu::WeakComponentImplHelper
+: cppu::WeakComponentImplHelper
 (m_aMutex)
 , m_nSelection(nSelection)
 {
@@ -513,6 +521,16 @@ VclGtkClipboard::VclGtkClipboard(GdkAtom nSelection)
 m_pOwner->m_pThis = this;
 }
 
+void VclGtkClipboard::flushClipboard()
+  throw (RuntimeException, std::exception)
+{
+if (GDK_SELECTION_CLIPBOARD != m_nSelection)
+return;
+
+GtkClipboard* clipboard = gtk_clipboard_get(m_nSelection);
+gtk_clipboard_store(clipboard);
+}
+
 VclGtkClipboard::~VclGtkClipboard()
 {
 GtkClipboard* clipboard = gtk_clipboard_get(m_nSelection);
@@ -524,7 +542,7 @@ VclGtkClipboard::~VclGtkClipboard()
 void VclGtkClipboard::setContents(
 const Reference< css::datatransfer::XTransferable >& xTrans,
 const Reference< css::datatransfer::clipboard::XClipboardOwner >& 
xClipboardOwner )
-throw( RuntimeException, std::exception )
+throw(RuntimeException, std::exception)
 {
 osl::ClearableMutexGuard aGuard( m_aMutex );
 Reference< datatransfer::clipboard::XClipboardOwner > xOldOwner( m_aOwner 
);
@@ -584,6 +602,7 @@ void VclGtkClipboard::setContents(
 //if we have gained or lost ownership of the clipboard
 gtk_clipboard_set_with_owner(clipboard, aGtkTargets.data(), 
aGtkTargets.size(),
 ClipboardGetFunc, ClipboardClearFunc, 
G_OBJECT(m_pO

[Libreoffice-commits] core.git: 6 commits - lotuswordpro/source

2015-12-10 Thread Caolán McNamara
 lotuswordpro/source/filter/lwpfnlayout.cxx|2 +-
 lotuswordpro/source/filter/lwpframelayout.cxx |9 ++---
 lotuswordpro/source/filter/lwpobjfactory.cxx  |5 +
 lotuswordpro/source/filter/lwpobjfactory.hxx  |3 ++-
 lotuswordpro/source/filter/lwppara.cxx|2 +-
 lotuswordpro/source/filter/lwppara1.cxx   |2 +-
 lotuswordpro/source/filter/lwptblformula.cxx  |   17 -
 7 files changed, 32 insertions(+), 8 deletions(-)

New commits:
commit 3735b05668ffcaa37fcecf2907478616db52f2b4
Author: Caolán McNamara 
Date:   Thu Dec 10 21:28:39 2015 +

need a dynamic cast here

53rd and final distinct crash fix of this sequence

Change-Id: Id170132c2082fd4905192adc840125088ef5da27

diff --git a/lotuswordpro/source/filter/lwpfnlayout.cxx 
b/lotuswordpro/source/filter/lwpfnlayout.cxx
index 7707eef..3ba3795 100644
--- a/lotuswordpro/source/filter/lwpfnlayout.cxx
+++ b/lotuswordpro/source/filter/lwpfnlayout.cxx
@@ -258,7 +258,7 @@ void LwpEnSuperTableLayout::XFConvert(XFContentContainer * 
/*pCont*/)
 
 while(!rID.IsNull())
 {
-LwpVirtualLayout * pLayout = static_cast(rID.obj().get());
+LwpVirtualLayout * pLayout = 
dynamic_cast(rID.obj().get());
 if(!pLayout)
 {
 break;
commit ef68438d384ed6dd919fa0f1a3830d2171f8e002
Author: Caolán McNamara 
Date:   Thu Dec 10 21:24:32 2015 +

guard against empty Story

Change-Id: Ide44aed9a3189b0fd21a8adc039eb61bd3d3dc14

diff --git a/lotuswordpro/source/filter/lwppara.cxx 
b/lotuswordpro/source/filter/lwppara.cxx
index 4b20405..327e016 100644
--- a/lotuswordpro/source/filter/lwppara.cxx
+++ b/lotuswordpro/source/filter/lwppara.cxx
@@ -669,7 +669,7 @@ void LwpPara::RegisterStyle()
 if (!pPrePara)
 {
 LwpStory* pStory = pPara->GetStory();
-pPrePara = pStory->GetLastParaOfPreviousStory();
+pPrePara = pStory ? 
pStory->GetLastParaOfPreviousStory() : nullptr;
 
 if (!pPrePara)
 {
commit 1e0b9881b4dc7d002d5da767f1476fb1c2147fc7
Author: Caolán McNamara 
Date:   Thu Dec 10 21:20:03 2015 +

guard against broken formula and bad lengths

Change-Id: Iab13d67fdc218c84400a4d84e177e5096bb68379

diff --git a/lotuswordpro/source/filter/lwptblformula.cxx 
b/lotuswordpro/source/filter/lwptblformula.cxx
index 0562eea..963377e 100644
--- a/lotuswordpro/source/filter/lwptblformula.cxx
+++ b/lotuswordpro/source/filter/lwptblformula.cxx
@@ -170,8 +170,13 @@ bool LwpFormulaInfo::ReadExpression()
 /* Read the compiled expression length */
 m_pObjStrm->SeekRel(2);
 
-while ((TokenType = m_pObjStrm->QuickReaduInt16()) != TK_END)
+bool bError = false;
+while ((TokenType = m_pObjStrm->QuickReaduInt16(&bError)) != TK_END)
 {
+
+if (bError)
+throw std::runtime_error("error reading expression");
+
 // Get the disk length of this token
 DiskLength = m_pObjStrm->QuickReaduInt16();
 
@@ -221,19 +226,29 @@ bool LwpFormulaInfo::ReadExpression()
 case TK_NOT:
 m_pObjStrm->SeekRel(DiskLength); // extensible for future
 
+if (m_aStack.size() >= 2)
 {//binary operator
 LwpFormulaOp* pOp = new LwpFormulaOp(TokenType);
 pOp->AddArg(m_aStack.back()); m_aStack.pop_back();
 pOp->AddArg(m_aStack.back()); m_aStack.pop_back();
 m_aStack.push_back(pOp);
 }
+else
+{
+readSucceeded = false;
+}
 break;
 case TK_UNARY_MINUS:
+if (!m_aStack.empty())
 {
 LwpFormulaUnaryOp* pOp = new LwpFormulaUnaryOp(TokenType);
 pOp->AddArg(m_aStack.back()); m_aStack.pop_back();
 m_aStack.push_back(pOp);
 }
+else
+{
+readSucceeded = false;
+}
 break;
 default:
 // We don't know what to do with this token, so eat it.
commit 6834384e80cf5cd374cdec471ce385ba2ca94580
Author: Caolán McNamara 
Date:   Thu Dec 10 21:06:01 2015 +

check for null Modifiers

Change-Id: I842122f7e2cba48d4798905f41f63b3e06775d00

diff --git a/lotuswordpro/source/filter/lwppara1.cxx 
b/lotuswordpro/source/filter/lwppara1.cxx
index cfed811..087ac0b 100644
--- a/lotuswordpro/source/filter/lwppara1.cxx
+++ b/lotuswordpro/source/filter/lwppara1.cxx
@@ -220,7 +220,7 @@ void LwpPara::GetParaNumber(sal_uInt16 nPosition, 
ParaNumbering* pParaNumbering)
 if (pPreFrib)
 {
 if ((pPreFrib->GetType() == FRIB_TAG_TEXT) &&
-
(pP

[Libreoffice-commits] core.git: 6 commits - lotuswordpro/source sc/source

2014-10-24 Thread Caolán McNamara
 lotuswordpro/source/filter/lwpdrawobj.cxx  |   33 +++--
 lotuswordpro/source/filter/lwptools.hxx|6 
 sc/source/ui/condformat/colorformat.cxx|4 +--
 sc/source/ui/condformat/condformatdlgentry.cxx |2 -
 sc/source/ui/miscdlgs/datafdlg.cxx |5 +--
 5 files changed, 37 insertions(+), 13 deletions(-)

New commits:
commit ac68cab1f1e6991bc95fe482f4d9be1538b827c4
Author: Caolán McNamara 
Date:   Tue Oct 14 15:21:27 2014 +0100

coverity#1242739 Untrusted loop bound

and

coverity#1242739 Untrusted loop bound

Change-Id: I2cab9b3c531befc42c1522dd0d4beb59df7ae315

diff --git a/lotuswordpro/source/filter/lwpdrawobj.cxx 
b/lotuswordpro/source/filter/lwpdrawobj.cxx
index 4ae6279..2ca16ad 100644
--- a/lotuswordpro/source/filter/lwpdrawobj.cxx
+++ b/lotuswordpro/source/filter/lwpdrawobj.cxx
@@ -1209,10 +1209,14 @@ void LwpDrawTextArt::Read()
 sal_uInt16 nPointNumber;
 sal_Int16 nX, nY;
 m_pStream->ReadUInt16( nPointNumber );
+
+size_t nPoints = nPointNumber*3+1;
+if (nPoints > m_pStream->remainingSize() / 4)
+throw BadRead();
+
 m_aTextArtRec.aPath[0].n = nPointNumber;
-m_aTextArtRec.aPath[0].pPts = new SdwPoint [nPointNumber*3+1];
-sal_uInt16 nPt = 0;
-for ( nPt = 0; nPt <= nPointNumber*3; nPt++)
+m_aTextArtRec.aPath[0].pPts = new SdwPoint[nPoints];
+for (size_t nPt = 0; nPt < nPoints; ++nPt)
 {
 m_pStream->ReadInt16( nX );
 m_pStream->ReadInt16( nY );
@@ -1221,9 +1225,14 @@ void LwpDrawTextArt::Read()
 }
 
 m_pStream->ReadUInt16( nPointNumber );
+
+nPoints = nPointNumber*3+1;
+if (nPoints > m_pStream->remainingSize() / 4)
+throw BadRead();
+
 m_aTextArtRec.aPath[1].n = nPointNumber;
-m_aTextArtRec.aPath[1].pPts = new SdwPoint [nPointNumber*3+1];
-for (nPt = 0; nPt <= nPointNumber*3; nPt++)
+m_aTextArtRec.aPath[1].pPts = new SdwPoint[nPoints];
+for (size_t nPt = 0; nPt < nPoints; ++nPt)
 {
 m_pStream->ReadInt16( nX );
 m_pStream->ReadInt16( nY );
@@ -1251,6 +1260,10 @@ void LwpDrawTextArt::Read()
 - 
(m_aTextArtRec.aPath[0].n*3 + 1)*4
 - 
(m_aTextArtRec.aPath[1].n*3 + 1)*4;
 
+
+if (m_aTextArtRec.nTextLen > m_pStream->remainingSize())
+throw BadRead();
+
 m_aTextArtRec.pTextString = new sal_uInt8 [m_aTextArtRec.nTextLen];
 m_pStream->Read(m_aTextArtRec.pTextString, m_aTextArtRec.nTextLen);
 m_aTextArtRec.pTextString[m_aTextArtRec.nTextLen-1] = 0;
commit da859a7949238e74e5287f1bacc61886b4294858
Author: Caolán McNamara 
Date:   Tue Oct 14 15:13:01 2014 +0100

coverity#1242791 Untrusted loop bound

Change-Id: Iba6d6b77fe30e11f50e16c1ee899b71ea4337355

diff --git a/lotuswordpro/source/filter/lwpdrawobj.cxx 
b/lotuswordpro/source/filter/lwpdrawobj.cxx
index f357f9d..4ae6279 100644
--- a/lotuswordpro/source/filter/lwpdrawobj.cxx
+++ b/lotuswordpro/source/filter/lwpdrawobj.cxx
@@ -591,7 +591,10 @@ void LwpDrawPolygon::Read()
 this->ReadClosedObjStyle();
 m_pStream->ReadUInt16( m_nNumPoints );
 
-m_pVector = new SdwPoint [m_nNumPoints];
+if (m_nNumPoints > m_pStream->remainingSize() / 4)
+throw BadRead();
+
+m_pVector = new SdwPoint[m_nNumPoints];
 
 for (sal_uInt16 nC = 0; nC < m_nNumPoints; nC++)
 {
commit e4ebd97a9b5dc3a25a142109d2a0dbe41925e431
Author: Caolán McNamara 
Date:   Tue Oct 14 15:12:05 2014 +0100

coverity#1242918 Untrusted loop bound

Change-Id: I8575a43a095165a81417f169463aaf2c4ab337e8

diff --git a/lotuswordpro/source/filter/lwpdrawobj.cxx 
b/lotuswordpro/source/filter/lwpdrawobj.cxx
index 4be146f..f357f9d 100644
--- a/lotuswordpro/source/filter/lwpdrawobj.cxx
+++ b/lotuswordpro/source/filter/lwpdrawobj.cxx
@@ -505,7 +505,10 @@ void LwpDrawPolyLine::Read()
 m_pStream->ReadUChar( m_aPolyLineRec.aPenColor.unused );
 m_pStream->ReadUInt16( m_aPolyLineRec.nNumPoints );
 
-m_pVector= new SdwPoint [m_aPolyLineRec.nNumPoints];
+if (m_aPolyLineRec.nNumPoints > m_pStream->remainingSize() / 4)
+throw BadRead();
+
+m_pVector= new SdwPoint[m_aPolyLineRec.nNumPoints];
 
 for (sal_uInt16 nC = 0; nC < m_aPolyLineRec.nNumPoints; nC++)
 {
diff --git a/lotuswordpro/source/filter/lwptools.hxx 
b/lotuswordpro/source/filter/lwptools.hxx
index 51680bd..f240214 100644
--- a/lotuswordpro/source/filter/lwptools.hxx
+++ b/lotuswordpro/source/filter/lwptools.hxx
@@ -148,6 +148,12 @@ public:
 BadSeek() : std::runtime_error("Lotus Word Pro Bad Seek") { }
 };
 
+class BadRead: public std::runtime_error
+{
+public:
+BadRead() : std::runtime_error("Lotus Word Pro Bad Read") { }
+};
+
 class BadDecompress : public std::runtime_error
 {
 public:
commit 902a3df2daa196e2182b0741f0ec3849d158f42b
Author: Caolán McNamara 
Date:   Tue Oct 14 13:46:46 2014 +0100

coverity#735315 Unche