ofz 1-2-3 mem leak
Change-Id: I72b633b27578815fb0951e2bfac755fce51203f1
Reviewed-on: https://gerrit.libreoffice.org/44400
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
diff --git a/sc/source/filter/lotus/filter.cxx b/sc/source/filter/lotus/filter.cxx
index 5da0736..605ba6d 100644
--- a/sc/source/filter/lotus/filter.cxx
+++ b/sc/source/filter/lotus/filter.cxx
@@ -40,8 +40,10 @@ static ErrCode
generate_Opcodes(LotusContext &rContext, SvStream& aStream,
ScfStreamProgressBar& aPrgrsBar)
{
OPCODE_FKT *pOps;
int nOps;
OPCODE_FKT *pOps = nullptr;
int nOps = 0;
ErrCode nErr = ERRCODE_NONE;
switch (rContext.eTyp)
{
@@ -49,15 +51,27 @@ generate_Opcodes(LotusContext &rContext, SvStream& aStream,
case eWK_2:
pOps = LotusContext::pOpFkt;
nOps = FKT_LIMIT;
break;
break;
case eWK123:
pOps = LotusContext::pOpFkt123;
nOps = FKT_LIMIT123;
break;
case eWK3: return SCERR_IMPORT_NI;
case eWK_Error: return SCERR_IMPORT_FORMAT;
default: return SCERR_IMPORT_UNKNOWN_WK;
}
break;
case eWK3:
nErr = SCERR_IMPORT_NI;
break;
case eWK_Error:
nErr = SCERR_IMPORT_FORMAT;
break;
default:
nErr = SCERR_IMPORT_UNKNOWN_WK;
break;
}
if (nErr != ERRCODE_NONE)
{
MemDelete(rContext);
return nErr;
}
// #i76299# seems that SvStream::IsEof() does not work correctly
aStream.Seek( STREAM_SEEK_TO_END );
@@ -72,7 +86,10 @@ generate_Opcodes(LotusContext &rContext, SvStream& aStream,
if( nOpcode == LOTUS_EOF )
rContext.bEOF = true;
else if( nOpcode == LOTUS_FILEPASSWD )
return SCERR_IMPORT_FILEPASSWD;
{
nErr = SCERR_IMPORT_FILEPASSWD;
break;
}
else if( nOpcode < nOps )
pOps[ nOpcode ] (rContext, aStream, nLength);
else if (rContext.eTyp == eWK123 && nOpcode == LOTUS_PATTERN)
@@ -101,9 +118,10 @@ generate_Opcodes(LotusContext &rContext, SvStream& aStream,
MemDelete(rContext);
rContext.pDoc->CalcAfterLoad();
if (nErr == ERRCODE_NONE)
rContext.pDoc->CalcAfterLoad();
return ERRCODE_NONE;
return nErr;
}
WKTYP ScanVersion(SvStream& aStream)