diff options
Diffstat (limited to 'basic/source/runtime')
-rw-r--r-- | basic/source/runtime/methods.cxx | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/basic/source/runtime/methods.cxx b/basic/source/runtime/methods.cxx index 08d6699f9785..18da6ae72ef7 100644 --- a/basic/source/runtime/methods.cxx +++ b/basic/source/runtime/methods.cxx @@ -1267,7 +1267,18 @@ RTLFUNC(Mid) else { OUString aResultStr; - aResultStr = aArgStr.copy( nStartPos, nLen ); + if(nLen < 0) + { + aResultStr = aArgStr.copy( nStartPos); + } + else + { + if(nStartPos + nLen > aArgStr.getLength()) + { + nLen = aArgStr.getLength() - nStartPos; + } + aResultStr = aArgStr.copy( nStartPos, nLen ); + } rPar.Get(0)->PutString( aResultStr ); } } |