Files
loongoffice/basic/qa/basic_coverage/test_declare_from_dll.bas
Mike Kaganski 5276177877 tdf#147364: fix function signature to account to calling convention
First, the integer function result is returned in a 64-bit register (RAX),
and truncation it to sal_Int32 breaks any pointer return value.

Second, using explicit (not vararg) first function double argument would
pass it through XMM0, without also copying it to RCX (which is guaranteed
for varargs).

Ref: https://docs.microsoft.com/en-us/cpp/build/x64-calling-convention
Change-Id: I08212c44d8690d6910068b13c16af2ce899c94f2
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/129808
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2022-02-11 12:56:03 +01:00

37 lines
1.1 KiB
QBasic

'
' This file is part of the LibreOffice project.
'
' This Source Code Form is subject to the terms of the Mozilla Public
' License, v. 2.0. If a copy of the MPL was not distributed with this
' file, You can obtain one at http://mozilla.org/MPL/2.0/.
'
Option Explicit
' We link to shlwapi in many places, so safe to rely on it here
Declare Function PathFindExtensionA Lib "Shlwapi" (ByVal pszPath As String) As String
Function doUnitTest() As String
TestUtil.TestInit
verify_testPathFindExtensionA
doUnitTest = TestUtil.GetResult()
End Function
Sub verify_testPathFindExtensionA()
On Error GoTo errorHandler
' Only test on Windows
If (GetGUIType() <> 1) Then
TestUtil.Assert(True) ' The test passed
Exit Sub
End If
' Without the fix for tdf#147364 in place, the next call would crash in 64-bit version with
' *** Exception 0xc0000005 occurred ***
TestUtil.AssertEqual(PathFindExtensionA("filename.ext"), ".ext", "PathFindExtensionA(""filename.ext"")")
Exit Sub
errorHandler:
TestUtil.ReportErrorHandler("verify_testPathFindExtensionA", Err, Error$, Erl)
End Sub