summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--basic/source/runtime/methods.cxx13
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 );
}
}