This is an automated email from the ASF dual-hosted git repository.

leginee pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/openoffice.git

commit 30f18d3fb8fe7eacd8ee5f353bc7c60bfbf18ac5
Author: Peter Kovacs <[email protected]>
AuthorDate: Wed Jul 22 00:55:30 2026 +0200

    vcl/basic/sfx2/unixODBC: Win64 (x64) source fixes
    
    Source-level fixes needed to compile/link these modules for Windows x86-64
    (VS2008 x64).  Each is arch-neutral or arch-guarded, so the x86 build is
    unchanged; isolated here so they can be cherry-picked onto the dmake
    windows-amd64 branch / upstream.
    
    - vcl/inc/win/wincomp.hxx: the pointer/handle class- and window-long indices
      GCL_HCURSOR/GCL_HICON/GCL_HBRBACKGROUND and GWL_HINSTANCE do not exist on
      Win64; use GCLP_*/GWLP_* with SetClassLongPtr/GetClassLongPtr/
      GetWindowLongPtr and (LONG_PTR) casts (compile on x86 too).
    - vcl/win/source/window/salframe.cxx: PtrToInt(wParam) misused on the 
integer
      IME request code (WPARAM is 64-bit on x64) -> static_cast<int>.
    - vcl/win/source/gdi/salgdi.cxx: ImplPreparePolyDraw took const sal_uLong* 
while
      the drawPolyPolygon* callers pass const sal_uInt32* (distinct pointer 
types on
      x64) -> sal_uInt32*.
    - vcl/source/window/scrwnd.cxx: Max(sal_uIntPtr, 1UL) ambiguous on x64 
(sal_uIntPtr
      is 64-bit, 1UL is unsigned long) -> Max(..., sal_uIntPtr(1UL)).
    - basic/source/runtime/dllmgr.cxx: the DllMgr_call32/callFp trampolines 
(wnt.asm)
      are x86 stdcall only; guard #if defined WNT -> #if defined(WNT) && 
!defined(_WIN64)
      so x64 uses the existing not-implemented stub (Basic Declare'd DLL calls
      unsupported on x64 until an x64 trampoline is written).
    - sfx2/source/bastyp/progress.cxx: extern Get10ThSec declared sal_uIntPtr 
but the
      definition returns sal_uInt32; these coincide on x86 but diverge on x64 
(link
      error) -> declare sal_uInt32.
    - unixODBC/inc/sqltypes.h: the _WIN64 branch uses INT64/UINT64 for 
SQLLEN/SQLULEN
      without pulling them in -> #include <basetsd.h> (arch-guarded).
    
    Co-Authored-By: Claude Opus 4.8 <[email protected]>
    (cherry picked from commit ca1383cbf9353b4189783687c37e993025edf764)
    (cherry picked from commit a82fa8aef582f462d3f5518690eb9c6c33e5e8d0)
---
 main/basic/source/runtime/dllmgr.cxx    |  6 +++++-
 main/sfx2/source/bastyp/progress.cxx    |  3 ++-
 main/unixODBC/inc/sqltypes.h            |  1 +
 main/vcl/inc/win/wincomp.hxx            | 14 +++++++-------
 main/vcl/source/window/scrwnd.cxx       |  2 +-
 main/vcl/win/source/gdi/salgdi.cxx      |  4 ++--
 main/vcl/win/source/window/salframe.cxx |  4 ++--
 7 files changed, 20 insertions(+), 14 deletions(-)

diff --git a/main/basic/source/runtime/dllmgr.cxx 
b/main/basic/source/runtime/dllmgr.cxx
index d31420340b..6a3adcdc7e 100644
--- a/main/basic/source/runtime/dllmgr.cxx
+++ b/main/basic/source/runtime/dllmgr.cxx
@@ -60,7 +60,11 @@
    variables accordingly.
 */
 
-#if defined WNT // only 32-bit Windows, actually
+#if defined(WNT) && !defined(_WIN64) // only 32-bit Windows: the 
DllMgr_call32/callFp
+                                     // trampolines (wnt.asm) are x86 stdcall 
only.
+                                     // x64 falls through to the 
not-implemented stub
+                                     // below (Basic Declare'd DLL calls 
unsupported on
+                                     // x64 until an x64 trampoline is 
written).
 
 extern "C" {
 
diff --git a/main/sfx2/source/bastyp/progress.cxx 
b/main/sfx2/source/bastyp/progress.cxx
index efacc2cfd1..3e189c066a 100644
--- a/main/sfx2/source/bastyp/progress.cxx
+++ b/main/sfx2/source/bastyp/progress.cxx
@@ -110,7 +110,8 @@ struct SfxProgress_Impl
 #define aTypeLibInfo aProgressTypeLibImpl
 
 //========================================================================
-extern sal_uIntPtr Get10ThSec();
+extern sal_uInt32 Get10ThSec();  // must match the definition in 
sfxbasecontroller.cxx
+                                 // (sal_uInt32); sal_uIntPtr diverges from it 
on x64
 
 // -----------------------------------------------------------------------
 
diff --git a/main/unixODBC/inc/sqltypes.h b/main/unixODBC/inc/sqltypes.h
index 399f702834..31171490b6 100644
--- a/main/unixODBC/inc/sqltypes.h
+++ b/main/unixODBC/inc/sqltypes.h
@@ -146,6 +146,7 @@ typedef unsigned char               SQLVARCHAR;
  *  New Win64 datatypes
  */
 #ifdef _WIN64
+#include <basetsd.h>                   /* INT64 / UINT64 (not otherwise pulled 
in here) */
 typedef INT64                  SQLLEN;
 typedef UINT64                 SQLULEN;
 typedef UINT64                 SQLSETPOSIROW;
diff --git a/main/vcl/inc/win/wincomp.hxx b/main/vcl/inc/win/wincomp.hxx
index e0bea9893b..60cc88b02c 100644
--- a/main/vcl/inc/win/wincomp.hxx
+++ b/main/vcl/inc/win/wincomp.hxx
@@ -146,37 +146,37 @@ inline HFONT GetWindowFont( HWND hWnd )
 
 inline void SetClassCursor( HWND hWnd, HCURSOR hCursor )
 {
-       SetClassLong( hWnd, GCL_HCURSOR, (DWORD)hCursor );
+       SetClassLongPtr( hWnd, GCLP_HCURSOR, (LONG_PTR)hCursor );
 }
 
 inline HCURSOR GetClassCursor( HWND hWnd )
 {
-       return (HCURSOR)GetClassLong( hWnd, GCL_HCURSOR );
+       return (HCURSOR)GetClassLongPtr( hWnd, GCLP_HCURSOR );
 }
 
 inline void SetClassIcon( HWND hWnd, HICON hIcon )
 {
-       SetClassLong( hWnd, GCL_HICON, (DWORD)hIcon );
+       SetClassLongPtr( hWnd, GCLP_HICON, (LONG_PTR)hIcon );
 }
 
 inline HICON GetClassIcon( HWND hWnd )
 {
-       return (HICON)GetClassLong( hWnd, GCL_HICON );
+       return (HICON)GetClassLongPtr( hWnd, GCLP_HICON );
 }
 
 inline HBRUSH SetClassBrush( HWND hWnd, HBRUSH hBrush )
 {
-       return (HBRUSH)SetClassLong( hWnd, GCL_HBRBACKGROUND, (DWORD)hBrush );
+       return (HBRUSH)SetClassLongPtr( hWnd, GCLP_HBRBACKGROUND, 
(LONG_PTR)hBrush );
 }
 
 inline HBRUSH GetClassBrush( HWND hWnd )
 {
-       return (HBRUSH)GetClassLong( hWnd, GCL_HBRBACKGROUND );
+       return (HBRUSH)GetClassLongPtr( hWnd, GCLP_HBRBACKGROUND );
 }
 
 inline HINSTANCE GetWindowInstance( HWND hWnd )
 {
-       return (HINSTANCE)GetWindowLong( hWnd, GWL_HINSTANCE );
+       return (HINSTANCE)GetWindowLongPtr( hWnd, GWLP_HINSTANCE );
 }
 
 // ------------------------
diff --git a/main/vcl/source/window/scrwnd.cxx 
b/main/vcl/source/window/scrwnd.cxx
index eeb0c43811..9cd21452b5 100644
--- a/main/vcl/source/window/scrwnd.cxx
+++ b/main/vcl/source/window/scrwnd.cxx
@@ -394,7 +394,7 @@ IMPL_LINK( ImplWheelWindow, ImplScrollHdl, Timer*, EMPTYARG 
)
                        pWindow->Command( aCEvt );
                        if( aDel.IsDead() )
                                return 0;
-                       mnRepaintTime = Max( Time::GetSystemTicks() - nTime, 
1UL );
+                       mnRepaintTime = Max( Time::GetSystemTicks() - nTime, 
sal_uIntPtr(1UL) );
                        ImplRecalcScrollValues();
                }
        }
diff --git a/main/vcl/win/source/gdi/salgdi.cxx 
b/main/vcl/win/source/gdi/salgdi.cxx
index 53453a0ec3..fc033a8844 100644
--- a/main/vcl/win/source/gdi/salgdi.cxx
+++ b/main/vcl/win/source/gdi/salgdi.cxx
@@ -622,7 +622,7 @@ void ImplClearHDCCache( SalData* pData )
 // Make sure pWinPointAry and pWinFlagAry are big enough
 void ImplPreparePolyDraw( bool                                         
bCloseFigures,
                           sal_uLong                                    nPoly,
-                          const sal_uLong*                             pPoints,
+                          const sal_uInt32*                            pPoints,
                           const SalPoint* const*       pPtAry,
                           const BYTE* const*           pFlgAry,
                           POINT*                                       
pWinPointAry,
@@ -1601,7 +1601,7 @@ sal_Bool WinSalGraphics::drawPolyPolygonBezier( 
sal_uInt32 nPoly, const sal_uInt
                                "WinSalGraphics::DrawPolyPolygonBezier(): POINT 
!= SalPoint" );
 
     sal_uLong nCurrPoly, nTotalPoints;
-    const sal_uLong* pCurrPoints = pPoints;
+    const sal_uInt32* pCurrPoints = pPoints;
     for( nCurrPoly=0, nTotalPoints=0; nCurrPoly<nPoly; ++nCurrPoly )
         nTotalPoints += *pCurrPoints++;
 
diff --git a/main/vcl/win/source/window/salframe.cxx 
b/main/vcl/win/source/window/salframe.cxx
index 7e0fe04a44..703fd76bef 100644
--- a/main/vcl/win/source/window/salframe.cxx
+++ b/main/vcl/win/source/window/salframe.cxx
@@ -6249,12 +6249,12 @@ LRESULT CALLBACK SalFrameWndProc( HWND hWnd, UINT nMsg, 
WPARAM wParam, LPARAM lP
             break;
 #if WINVER >= 0x0500
         case WM_IME_REQUEST:
-            if ( PtrToInt( wParam ) == IMR_RECONVERTSTRING )
+            if ( static_cast<int>( wParam ) == IMR_RECONVERTSTRING )
             {
                 nRet = ImplHandleIMEReconvertString( hWnd, lParam );
                 rDef = FALSE;
             }
-           else if( PtrToInt( wParam ) == IMR_CONFIRMRECONVERTSTRING )
+           else if( static_cast<int>( wParam ) == IMR_CONFIRMRECONVERTSTRING )
            {
                nRet = ImplHandleIMEConfirmReconvertString( hWnd, lParam );
                rDef = FALSE;

Reply via email to