diff options
Diffstat (limited to 'basic/source/runtime/methods.cxx')
-rw-r--r-- | basic/source/runtime/methods.cxx | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/basic/source/runtime/methods.cxx b/basic/source/runtime/methods.cxx index 7f724b1b6810..666dbbad012d 100644 --- a/basic/source/runtime/methods.cxx +++ b/basic/source/runtime/methods.cxx @@ -1261,8 +1261,12 @@ RTLFUNC(Mid) else { aResultStr = aArgStr; - aResultStr.remove( nStartPos, nLen ); - aResultStr.insert( nStartPos, rPar.Get(4)->GetOUString().getStr(), std::min(nLen, rPar.Get(4)->GetOUString().getLength())); + sal_Int32 nTmpStartPos = nStartPos; + if ( nTmpStartPos > aArgStr.getLength() ) + nTmpStartPos = aArgStr.getLength(); + else + aResultStr.remove( nTmpStartPos, nLen ); + aResultStr.insert( nTmpStartPos, rPar.Get(4)->GetOUString().getStr(), std::min(nLen, rPar.Get(4)->GetOUString().getLength())); } rPar.Get(1)->PutString( aResultStr.makeStringAndClear() ); |