summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--basic/qa/basic_coverage/test_split_method.vb27
-rw-r--r--basic/source/runtime/methods1.cxx6
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 );
}