diff options
author | Caolán McNamara <caolanm@redhat.com> | 2015-04-15 16:27:18 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2015-04-15 16:27:50 +0100 |
commit | 3bf27eaa9f524e3b6ae2a3eec47368f63b3aeeed (patch) | |
tree | 57a19448bf6e47c12ce5a4a72f0ccf9a5427c286 /sc | |
parent | 0e08fb803ff5535a60bd9e87c0528702d001148d (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.cxx | 24 |
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 ); } |