Kaydet (Commit) 9b0cd919 authored tarafından Caolán McNamara's avatar Caolán McNamara

avoid hang with certain .docs

Change-Id: I4dc93242be76dc2d7f7504457967c8d390afe9c8
üst 05457f3b
This diff was suppressed by a .gitattributes entry.
......@@ -2140,7 +2140,7 @@ void WW8ReaderSave::Restore( SwWW8ImplReader* pRdr )
}
void SwWW8ImplReader::Read_HdFtFootnoteText( const SwNodeIndex* pSttIdx,
long nStartCp, long nLen, ManTypes nType )
WW8_CP nStartCp, WW8_CP nLen, ManTypes nType )
{
// Saves Flags (amongst other things) and resets them
WW8ReaderSave aSave( this );
......@@ -2227,7 +2227,7 @@ long SwWW8ImplReader::Read_And(WW8PLCFManResult* pRes)
return 0;
}
void SwWW8ImplReader::Read_HdFtTextAsHackedFrame(long nStart, long nLen,
void SwWW8ImplReader::Read_HdFtTextAsHackedFrame(WW8_CP nStart, WW8_CP nLen,
SwFrameFormat &rHdFtFormat, sal_uInt16 nPageWidth)
{
const SwNodeIndex* pSttIdx = rHdFtFormat.GetContent().GetContentIdx();
......@@ -2271,7 +2271,7 @@ void SwWW8ImplReader::Read_HdFtTextAsHackedFrame(long nStart, long nLen,
MoveOutsideFly(pFrame, aTmpPos);
}
void SwWW8ImplReader::Read_HdFtText(long nStart, long nLen, SwFrameFormat* pHdFtFormat)
void SwWW8ImplReader::Read_HdFtText(WW8_CP nStart, WW8_CP nLen, SwFrameFormat* pHdFtFormat)
{
const SwNodeIndex* pSttIdx = pHdFtFormat->GetContent().GetContentIdx();
if (!pSttIdx)
......@@ -3879,6 +3879,8 @@ void SwWW8ImplReader::ReadAttrs(WW8_CP& rNext, WW8_CP& rTextPos, bool& rbStartLi
{
m_aCurrAttrCP = rTextPos;
rNext = ReadTextAttr( rTextPos, rbStartLine );
if (rTextPos == rNext && rTextPos == WW8_CP_MAX)
break;
}
while( rTextPos >= rNext );
......@@ -3920,7 +3922,7 @@ void SwWW8ImplReader::CloseAttrEnds()
EndSpecial();
}
bool SwWW8ImplReader::ReadText(long nStartCp, long nTextLen, ManTypes nType)
bool SwWW8ImplReader::ReadText(WW8_CP nStartCp, WW8_CP nTextLen, ManTypes nType)
{
bool bJoined=false;
......@@ -3946,6 +3948,12 @@ bool SwWW8ImplReader::ReadText(long nStartCp, long nTextLen, ManTypes nType)
m_pStrm->Seek( m_pSBase->WW8Cp2Fc( nStartCp + nCpOfs, &m_bIsUnicode ) );
WW8_CP l = nStartCp;
const WW8_CP nMaxPossible = WW8_CP_MAX-nStartCp;
if (nTextLen > nMaxPossible)
{
SAL_WARN_IF(nTextLen > nMaxPossible, "sw.ww8", "TextLen too long");
nTextLen = nMaxPossible;
}
while ( l<nStartCp+nTextLen )
{
ReadAttrs( nNext, l, bStartLine );// Takes SectionBreaks into account, too
......
......@@ -1380,8 +1380,8 @@ private:
void Read_HdFt(int nSect, const SwPageDesc *pPrev,
const wwSection &rSection);
void Read_HdFtText(long nStartCp, long nLen, SwFrameFormat* pHdFtFormat);
void Read_HdFtTextAsHackedFrame(long nStart, long nLen,
void Read_HdFtText(WW8_CP nStartCp, WW8_CP nLen, SwFrameFormat* pHdFtFormat);
void Read_HdFtTextAsHackedFrame(WW8_CP nStart, WW8_CP nLen,
SwFrameFormat &rHdFtFormat, sal_uInt16 nPageWidth);
bool isValid_HdFt_CP(WW8_CP nHeaderCP) const;
......@@ -1419,13 +1419,13 @@ private:
long ReadTextAttr(WW8_CP& rTextPos, bool& rbStartLine);
void ReadAttrs(WW8_CP& rNext, WW8_CP& rTextPos, bool& rbStartLine);
void CloseAttrEnds();
bool ReadText(long nStartCp, long nTextLen, ManTypes nType);
bool ReadText(WW8_CP nStartCp, WW8_CP nTextLen, ManTypes nType);
void ReadRevMarkAuthorStrTabl( SvStream& rStrm, sal_Int32 nTablePos,
sal_Int32 nTableSiz, SwDoc& rDoc );
void Read_HdFtFootnoteText( const SwNodeIndex* pSttIdx, long nStartCp,
long nLen, ManTypes nType );
void Read_HdFtFootnoteText(const SwNodeIndex* pSttIdx, WW8_CP nStartCp,
WW8_CP nLen, ManTypes nType);
void ImportTox( int nFieldId, const OUString& aStr );
......
......@@ -3805,12 +3805,15 @@ void WW8PLCFx_FLD::GetSprms(WW8PLCFxDesc* p)
void WW8PLCFx_FLD::advance()
{
SAL_WARN_IF(!pPLCF, "sw.ww8", "Call without PLCFspecial field");
if( !pPLCF )
return;
pPLCF->advance();
}
bool WW8PLCFx_FLD::GetPara(long nIdx, WW8FieldDesc& rF)
{
OSL_ENSURE( pPLCF, "Call without PLCFspecial field" );
SAL_WARN_IF(!pPLCF, "sw.ww8", "Call without PLCFspecial field");
if( !pPLCF )
return false;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment