From 82a505aae7fdb532e250b6acce1d33431cedfa88 Mon Sep 17 00:00:00 2001 From: Julien Nabet Date: Tue, 30 Dec 2014 21:48:21 +0100 Subject: Resolves fdo#87834: strange behavior of mid()-function MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit See https://bugs.freedesktop.org/show_bug.cgi?id=87834 Thank you Michael Büssow for pointing these cases Change-Id: I3a9b58360ddab529d1fb2f7eeba7f1c7ae69ba7c Reviewed-on: https://gerrit.libreoffice.org/13707 Reviewed-by: Caolán McNamara Tested-by: Caolán McNamara (cherry picked from commit b7d02d7a5a374da3e01e0abc4022fba35daa1840) Reviewed-on: https://gerrit.libreoffice.org/14145 Reviewed-by: Eike Rathke Tested-by: Eike Rathke --- basic/source/runtime/methods.cxx | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'basic') diff --git a/basic/source/runtime/methods.cxx b/basic/source/runtime/methods.cxx index f27e77146407..51df75b74bd2 100644 --- a/basic/source/runtime/methods.cxx +++ b/basic/source/runtime/methods.cxx @@ -1205,7 +1205,7 @@ RTLFUNC(Mid) } OUString aArgStr = rPar.Get(1)->GetOUString(); sal_Int32 nStartPos = rPar.Get(2)->GetLong(); - if ( nStartPos == 0 ) + if ( nStartPos < 1 ) { StarBASIC::Error( SbERR_BAD_ARGUMENT ); } @@ -1279,12 +1279,18 @@ RTLFUNC(Mid) else { OUString aResultStr; - if(nLen < 0) + if (nStartPos > aArgStr.getLength()) + { + aResultStr = ""; + } + else if(nArgCount == 2) { aResultStr = aArgStr.copy( nStartPos); } else { + if (nLen < 0) + nLen = 0; if(nStartPos + nLen > aArgStr.getLength()) { nLen = aArgStr.getLength() - nStartPos; -- cgit