summaryrefslogtreecommitdiff
path: root/sc
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2015-04-15 16:27:18 +0100
committerCaolán McNamara <caolanm@redhat.com>2015-04-15 16:27:50 +0100
commit3bf27eaa9f524e3b6ae2a3eec47368f63b3aeeed (patch)
tree57a19448bf6e47c12ce5a4a72f0ccf9a5427c286 /sc
parent0e08fb803ff5535a60bd9e87c0528702d001148d (diff)
don't crash on export of fdo60087-2.xlsx to xls
Change-Id: I888828bc88deea16c46895d29f25526bd3c44ce7
Diffstat (limited to 'sc')
-rw-r--r--sc/source/filter/excel/xelink.cxx24
1 files changed, 12 insertions, 12 deletions
diff --git a/sc/source/filter/excel/xelink.cxx b/sc/source/filter/excel/xelink.cxx
index 87b725194641..df22f9838c84 100644
--- a/sc/source/filter/excel/xelink.cxx
+++ b/sc/source/filter/excel/xelink.cxx
@@ -766,14 +766,14 @@ XclExpTabInfo::XclExpTabInfo( const XclExpRoot& rRoot ) :
bool XclExpTabInfo::IsExportTab( SCTAB nScTab ) const
{
/* Check sheet index before to avoid assertion in GetFlag(). */
- return (nScTab < mnScCnt) && !GetFlag( nScTab, EXC_TABBUF_SKIPMASK );
+ return (nScTab < mnScCnt && nScTab >= 0) && !GetFlag( nScTab, EXC_TABBUF_SKIPMASK );
}
bool XclExpTabInfo::IsExternalTab( SCTAB nScTab ) const
{
/* Check sheet index before to avoid assertion (called from formula
compiler also for deleted references). */
- return (nScTab < mnScCnt) && GetFlag( nScTab, EXC_TABBUF_EXTERN );
+ return (nScTab < mnScCnt && nScTab >= 0) && GetFlag( nScTab, EXC_TABBUF_EXTERN );
}
bool XclExpTabInfo::IsVisibleTab( SCTAB nScTab ) const
@@ -788,7 +788,7 @@ bool XclExpTabInfo::IsSelectedTab( SCTAB nScTab ) const
bool XclExpTabInfo::IsDisplayedTab( SCTAB nScTab ) const
{
- OSL_ENSURE( nScTab < mnScCnt, "XclExpTabInfo::IsActiveTab - sheet out of range" );
+ OSL_ENSURE( nScTab < mnScCnt && nScTab >= 0, "XclExpTabInfo::IsActiveTab - sheet out of range" );
return GetXclTab( nScTab ) == mnDisplXclTab;
}
@@ -799,31 +799,31 @@ bool XclExpTabInfo::IsMirroredTab( SCTAB nScTab ) const
OUString XclExpTabInfo::GetScTabName( SCTAB nScTab ) const
{
- OSL_ENSURE( nScTab < mnScCnt, "XclExpTabInfo::IsActiveTab - sheet out of range" );
- return (nScTab < mnScCnt) ? maTabInfoVec[ nScTab ].maScName : OUString();
+ OSL_ENSURE( nScTab < mnScCnt && nScTab >= 0, "XclExpTabInfo::IsActiveTab - sheet out of range" );
+ return (nScTab < mnScCnt && nScTab >= 0) ? maTabInfoVec[ nScTab ].maScName : OUString();
}
sal_uInt16 XclExpTabInfo::GetXclTab( SCTAB nScTab ) const
{
- return (nScTab < mnScCnt) ? maTabInfoVec[ nScTab ].mnXclTab : EXC_TAB_DELETED;
+ return (nScTab < mnScCnt && nScTab >= 0) ? maTabInfoVec[ nScTab ].mnXclTab : EXC_TAB_DELETED;
}
SCTAB XclExpTabInfo::GetRealScTab( SCTAB nSortedScTab ) const
{
- OSL_ENSURE( nSortedScTab < mnScCnt, "XclExpTabInfo::GetRealScTab - sheet out of range" );
- return (nSortedScTab < mnScCnt) ? maFromSortedVec[ nSortedScTab ] : SCTAB_INVALID;
+ OSL_ENSURE( nSortedScTab < mnScCnt && nSortedScTab >= 0, "XclExpTabInfo::GetRealScTab - sheet out of range" );
+ return (nSortedScTab < mnScCnt && nSortedScTab >= 0) ? maFromSortedVec[ nSortedScTab ] : SCTAB_INVALID;
}
bool XclExpTabInfo::GetFlag( SCTAB nScTab, sal_uInt8 nFlags ) const
{
- OSL_ENSURE( nScTab < mnScCnt, "XclExpTabInfo::GetFlag - sheet out of range" );
- return (nScTab < mnScCnt) && ::get_flag( maTabInfoVec[ nScTab ].mnFlags, nFlags );
+ OSL_ENSURE( nScTab < mnScCnt && nScTab >= 0, "XclExpTabInfo::GetFlag - sheet out of range" );
+ return (nScTab < mnScCnt && nScTab >= 0) && ::get_flag( maTabInfoVec[ nScTab ].mnFlags, nFlags );
}
void XclExpTabInfo::SetFlag( SCTAB nScTab, sal_uInt8 nFlags, bool bSet )
{
- OSL_ENSURE( nScTab < mnScCnt, "XclExpTabInfo::SetFlag - sheet out of range" );
- if( nScTab < mnScCnt )
+ OSL_ENSURE( nScTab < mnScCnt && nScTab >= 0, "XclExpTabInfo::SetFlag - sheet out of range" );
+ if( nScTab < mnScCnt && nScTab >= 0 )
::set_flag( maTabInfoVec[ nScTab ].mnFlags, nFlags, bSet );
}