diff options
Diffstat (limited to 'basic')
-rw-r--r-- | basic/qa/basic_coverage/test_split_method.vb | 27 | ||||
-rw-r--r-- | basic/source/runtime/methods1.cxx | 6 |
2 files changed, 26 insertions, 7 deletions
diff --git a/basic/qa/basic_coverage/test_split_method.vb b/basic/qa/basic_coverage/test_split_method.vb index d09e8c3e7e3b..8f3701e3d987 100644 --- a/basic/qa/basic_coverage/test_split_method.vb +++ b/basic/qa/basic_coverage/test_split_method.vb @@ -6,10 +6,27 @@ ' Function doUnitTest as Integer + + doUnitTest = 0 + ' SPLIT - If ( Split( "Hello world" )(1) <> "world" ) Then - doUnitTest = 0 - Else - doUnitTest = 1 - End If + If ( Split( "Hello world" )(1) <> "world" ) Then Exit Function + + ' tdf#123025 - split function sets the datatype of the array to empty, + ' preventing any subsequent assignments of values to the array and to the elements itself. + Dim arr(1) As String + arr = Split("a/b", "/") + If ( arr(0) <> "a" Or arr(1) <> "b" ) Then Exit Function + ReDim Preserve arr(1) + If ( arr(0) <> "a" Or arr(1) <> "b" ) Then Exit Function + ReDim arr(1) + If ( arr(0) <> "" Or arr(1) <> "" ) Then Exit Function + arr(0) = "a" + arr(1) = "b" + If ( arr(0) <> "a" Or arr(1) <> "b" ) Then Exit Function + ReDim Preserve arr(1) + If ( arr(0) <> "a" Or arr(1) <> "b" ) Then Exit Function + + doUnitTest = 1 + End Function diff --git a/basic/source/runtime/methods1.cxx b/basic/source/runtime/methods1.cxx index 807806e4cea8..1dee293ef3cf 100644 --- a/basic/source/runtime/methods1.cxx +++ b/basic/source/runtime/methods1.cxx @@ -1627,13 +1627,15 @@ void SbRtl_Split(StarBASIC *, SbxArray & rPar, bool) } } - SbxDimArray* pArray = new SbxDimArray( SbxVARIANT ); + // tdf#123025 - split returns an array of substrings + SbxDimArray* pArray = new SbxDimArray( SbxSTRING ); pArray->unoAddDim32( 0, nArraySize-1 ); // insert parameter(s) into the array for(sal_Int32 i = 0 ; i < nArraySize ; i++ ) { - SbxVariableRef xVar = new SbxVariable( SbxVARIANT ); + // tdf#123025 - split returns an array of substrings + SbxVariableRef xVar = new SbxVariable( SbxSTRING ); xVar->PutString( vRet[i] ); pArray->Put32( xVar.get(), &i ); } |