tdf#136143 - reset SbxFlagBits::Fixed SbiRuntime::StepPARAM
In order to prevent type conversion errors, reset a variable of type SbxERROR to not fixed. Variable will be of type SbxERROR, but can be converted to any requested type. Change-Id: Ic856376e3f8232577a5e894a2adb2545c8723033 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/101419 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
This commit is contained in:
parent
0c28fc7d89
commit
781b6ac998
2 changed files with 53 additions and 0 deletions
51
basic/qa/basic_coverage/test_ismissing_cascade.vb
Normal file
51
basic/qa/basic_coverage/test_ismissing_cascade.vb
Normal file
|
@ -0,0 +1,51 @@
|
|||
Dim passCount As Integer
|
||||
Dim failCount As Integer
|
||||
Dim result As String
|
||||
|
||||
Function doUnitTest() As String
|
||||
result = verify_testIsMissingCascade()
|
||||
If failCount <> 0 Or passCount = 0 Then
|
||||
doUnitTest = 0
|
||||
Else
|
||||
doUnitTest = 1
|
||||
End If
|
||||
End Function
|
||||
|
||||
Function verify_testIsMissingCascade() As String
|
||||
|
||||
passCount = 0
|
||||
failCount = 0
|
||||
|
||||
result = "Test Results" & Chr$(10) & "============" & Chr$(10)
|
||||
testName = "Test missing (IsMissing with cascading optionals)"
|
||||
On Error GoTo errorHandler
|
||||
|
||||
' tdf#136143 - test cascading optionals in order to prevent type conversion errors, because
|
||||
' optional arguments are of type SbxERROR and set to not fixed.
|
||||
TestLog_ASSERT TestOpt(), 2, "Cascading optionals"
|
||||
|
||||
result = result & Chr$(10) & "Tests passed: " & passCount & Chr$(10) & "Tests failed: " & failCount & Chr$(10)
|
||||
verify_testIsMissingCascade = result
|
||||
|
||||
Exit Function
|
||||
errorHandler:
|
||||
TestLog_ASSERT False, True, Err.Description
|
||||
End Function
|
||||
|
||||
Function TestOpt(Optional A)
|
||||
TestOpt = TestOptCascade(A)
|
||||
End Function
|
||||
|
||||
Function TestOptCascade(Optional A)
|
||||
If IsMissing(A) Then A = 2
|
||||
TestOptCascade = A
|
||||
End Function
|
||||
|
||||
Sub TestLog_ASSERT(actual As Variant, expected As Integer, testName As String)
|
||||
If expected = actual Then
|
||||
passCount = passCount + 1
|
||||
Else
|
||||
result = result & Chr$(10) & " Failed: " & testName & " returned " & actual & ", expected " & expected
|
||||
failCount = failCount + 1
|
||||
End If
|
||||
End Sub
|
|
@ -4110,6 +4110,8 @@ void SbiRuntime::StepPARAM( sal_uInt32 nOp1, sal_uInt32 nOp2 )
|
|||
const SbxParamInfo* pParam = pInfo->GetParam( nIdx );
|
||||
if( pParam && ( pParam->nFlags & SbxFlagBits::Optional ) )
|
||||
{
|
||||
// tdf#136143 - reset SbxFlagBits::Fixed in order to prevent type conversion errors
|
||||
pVar->ResetFlag( SbxFlagBits::Fixed );
|
||||
// Default value?
|
||||
sal_uInt16 nDefaultId = static_cast<sal_uInt16>(pParam->nUserData & 0x0ffff);
|
||||
if( nDefaultId > 0 )
|
||||
|
|
Loading…
Reference in a new issue