<pre style='margin:0'>
Renee Otten (reneeotten) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/4d647d66ee0732899fa9699db32f6bff1061771a">https://github.com/macports/macports-ports/commit/4d647d66ee0732899fa9699db32f6bff1061771a</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'>     new 4d647d66ee0 wine-devel,wine-staging: Update to 10.2
</span>4d647d66ee0 is described below

<span style='display:block; white-space:pre;color:#808000;'>commit 4d647d66ee0732899fa9699db32f6bff1061771a
</span>Author: Dean M Greer <38226388+Gcenx@users.noreply.github.com>
AuthorDate: Fri Feb 28 21:00:33 2025 -0500

<span style='display:block; white-space:pre;color:#404040;'>    wine-devel,wine-staging: Update to 10.2
</span>---
 emulators/wine-devel/Portfile                      |  21 +-
 emulators/wine-devel/files/0002-macos_hacks.diff   |  60 +++---
 emulators/wine-devel/files/0003-bug56854.diff      |  23 +++
 .../wine-devel/files/1002-staging-macos_hacks.diff |  24 +++
 emulators/wine-devel/files/MR7448.diff             | 225 +++++++++++++++++++++
 5 files changed, 316 insertions(+), 37 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/emulators/wine-devel/Portfile b/emulators/wine-devel/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 1c5ebf38832..7b185ec846f 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/emulators/wine-devel/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/emulators/wine-devel/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -7,7 +7,7 @@ PortGroup                   muniversal 1.1
</span> 
 # Keep the wine-stable, wine-devel and wine-crossover portfiles as similar as possible.
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-github.setup                wine-mirror wine 10.1 wine-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+github.setup                wine-mirror wine 10.2 wine-
</span> github.tarball_from         archive
 name                        wine-devel
 conflicts                   wine-stable wine-staging wine-crossover
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -38,9 +38,9 @@ long_description \
</span> 
 checksums \
     ${distname}${extract.suffix} \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    rmd160  e7d90b40c213d9d4c242eaaefb1d23c6a0b5cfd7 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    sha256  d997ee279514dffe0541ecfd30c1f48ef97659b745c07b2e57fffc109aa6c57f \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    size    51982659
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    rmd160  163fecb6f1ee59a44b37e2b9eb237ab65488ab3c \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    sha256  bcf1a9870f1a670eddffcc329f1b44e8a900596fb2c7a3ec8c83b27e65a9b42e \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    size    52061847
</span> 
 depends_build \
     port:bison \
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -75,6 +75,11 @@ patchfiles-append \
</span> patchfiles-append \
     0002-macos_hacks.diff
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+# Bug fixes (remove wine-10.3)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    0003-bug56854.diff \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    MR7448.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> # wine requires the program specified in INSTALL to create intermediate
 # directories; /usr/bin/install doesn't.
 # http://bugs.winehq.org/show_bug.cgi?id=35310
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -145,12 +150,14 @@ subport wine-staging {
</span> 
     checksums-append \
         ${wine_staging_distfile} \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        rmd160  d1588e87c643987301422bfc46fd06dca25f16a9 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        sha256  029009c52a0eb428451d8381992bbcabe50bed4527f3a9c73d00f55c7f3af9cc \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        size    9542987
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        rmd160  e3cd40fcbe96c3b52b728f815328e6c9e9c40d01 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        sha256  44d051a8622dd6245d63b88d988eebcdb712d309ee57eccdccbe59d6c4788194 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        size    9386579
</span> 
     depends_patch-append    port:autoconf
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+    patchfiles-append       1002-staging-macos_hacks.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span>     set py_ver              3.13
     set py_ver_nodot        [string map {. {}} ${py_ver}]
     depends_patch-append    port:python${py_ver_nodot}
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/emulators/wine-devel/files/0002-macos_hacks.diff b/emulators/wine-devel/files/0002-macos_hacks.diff
</span><span style='display:block; white-space:pre;color:#808080;'>index e8477d198d2..52824672efb 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/emulators/wine-devel/files/0002-macos_hacks.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/emulators/wine-devel/files/0002-macos_hacks.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -69,11 +69,11 @@ index df3447a9014..4d70b83ee14 100644
</span>  
      if (flags & (IDLE_PRIORITY_CLASS | HIGH_PRIORITY_CLASS | REALTIME_PRIORITY_CLASS |
 diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c
<span style='display:block; white-space:pre;background:#ffe0e0;'>-index 2f2a7fe5427..ac525f1a477 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 33415b6dda8..2413fb537d7 100644
</span> --- a/dlls/ntdll/loader.c
 +++ b/dlls/ntdll/loader.c
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -2244,6 +2244,11 @@ static NTSTATUS perform_relocations( void *module, IMAGE_NT_HEADERS *nt, SIZE_T
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     return STATUS_SUCCESS;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -2197,6 +2197,11 @@ done:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     return status;
</span>  }
  
 +#ifdef __x86_64__
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -84,7 +84,7 @@ index 2f2a7fe5427..ac525f1a477 100644
</span>  
  /*************************************************************************
   *            build_module
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -2324,6 +2329,15 @@ static NTSTATUS build_module( LPCWSTR load_path, const UNICODE_STRING *nt_name,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -2278,6 +2283,15 @@ static NTSTATUS build_module( LPCWSTR load_path, const UNICODE_STRING *nt_name,
</span>      TRACE_(loaddll)( "Loaded %s at %p: %s\n", debugstr_w(wm->ldr.FullDllName.Buffer), *module,
                       is_builtin ? "builtin" : "native" );
  
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -100,7 +100,7 @@ index 2f2a7fe5427..ac525f1a477 100644
</span>      wm->ldr.LoadCount = 1;
      *pwm = wm;
      *module = NULL;
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -2765,6 +2779,399 @@ static WINE_MODREF *find_existing_module( HMODULE module )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -2723,6 +2737,399 @@ static WINE_MODREF *find_existing_module( HMODULE module )
</span>      return NULL;
  }
  
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -500,7 +500,7 @@ index 2f2a7fe5427..ac525f1a477 100644
</span>  
  /******************************************************************************
   *    load_native_dll  (internal)
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -4365,6 +4772,18 @@ static void release_address_space(void)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -4324,6 +4731,18 @@ static void release_address_space(void)
</span>  #endif
  }
  
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -519,7 +519,7 @@ index 2f2a7fe5427..ac525f1a477 100644
</span>  /******************************************************************
   *            loader_init
   *
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -4451,6 +4870,25 @@ void loader_init( CONTEXT *context, void **entry )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -4414,6 +4833,25 @@ void loader_init( CONTEXT *context, void **entry )
</span>      }
      else
      {
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -546,10 +546,10 @@ index 2f2a7fe5427..ac525f1a477 100644
</span>          if (NtCurrentTeb()->WowTebOffset) init_wow64( context );
  #endif
 diff --git a/dlls/ntdll/unix/loader.c b/dlls/ntdll/unix/loader.c
<span style='display:block; white-space:pre;background:#ffe0e0;'>-index 92f2e2eb3a3..0dfee19f714 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 0bade5b35f0..1e4c485894f 100644
</span> --- a/dlls/ntdll/unix/loader.c
 +++ b/dlls/ntdll/unix/loader.c
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1847,6 +1847,48 @@ static ULONG_PTR get_image_address(void)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1832,6 +1832,48 @@ static ULONG_PTR get_image_address(void)
</span>      return 0;
  }
  
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -598,7 +598,7 @@ index 92f2e2eb3a3..0dfee19f714 100644
</span>  /***********************************************************************
   *           start_main_thread
   */
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1869,6 +1911,13 @@ static void start_main_thread(void)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1854,6 +1896,13 @@ static void start_main_thread(void)
</span>      load_ntdll();
      load_wow64_ntdll( main_image_info.Machine );
      load_apiset_dll();
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -613,7 +613,7 @@ index 92f2e2eb3a3..0dfee19f714 100644
</span>  }
  
 diff --git a/dlls/ntdll/unix/signal_x86_64.c b/dlls/ntdll/unix/signal_x86_64.c
<span style='display:block; white-space:pre;background:#ffe0e0;'>-index 537e4e1f60e..73d18fc80fb 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 52c907f1a32..f41eb03e26b 100644
</span> --- a/dlls/ntdll/unix/signal_x86_64.c
 +++ b/dlls/ntdll/unix/signal_x86_64.c
 @@ -1023,7 +1023,11 @@ NTSTATUS WINAPI NtSetContextThread( HANDLE handle, const CONTEXT *context )
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -796,8 +796,8 @@ index 537e4e1f60e..73d18fc80fb 100644
</span>      case TRAP_x86_STKFLT:  /* Stack fault */
          rec.ExceptionCode = EXCEPTION_STACK_OVERFLOW;
 @@ -2600,6 +2748,8 @@ void call_init_thunk( LPTHREAD_START_ROUTINE entry, void *arg, BOOL suspend, TEB
<span style='display:block; white-space:pre;background:#ffe0e0;'>-     __asm__ volatile (".byte 0x65\n\tmovq %0,%c1" :: "r" (teb->Tib.Self), "n" (FIELD_OFFSET(TEB, Tib.Self)));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     __asm__ volatile (".byte 0x65\n\tmovq %0,%c1" :: "r" (teb->ThreadLocalStoragePointer), "n" (FIELD_OFFSET(TEB, ThreadLocalStoragePointer)));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     __asm__ volatile ("movq %0,%%gs:%c1" :: "r" (teb->Tib.Self), "n" (FIELD_OFFSET(TEB, Tib.Self)));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     __asm__ volatile ("movq %0,%%gs:%c1" :: "r" (teb->ThreadLocalStoragePointer), "n" (FIELD_OFFSET(TEB, ThreadLocalStoragePointer)));
</span>      thread_data->pthread_teb = mac_thread_gsbase();
 +    __asm__ volatile (".byte 0x65\n\tmovq %0,%c1" :: "r" (teb->Peb), "n" (FIELD_OFFSET(TEB, Peb)));
 +    amd64_thread_data()->pthread_teb = mac_thread_gsbase();
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -805,10 +805,10 @@ index 537e4e1f60e..73d18fc80fb 100644
</span>         thread's gsbase.  Have each thread record its gsbase pointer into its
         TEB so alloc_tls_slot() can find it. */
 diff --git a/dlls/ntdll/unix/thread.c b/dlls/ntdll/unix/thread.c
<span style='display:block; white-space:pre;background:#ffe0e0;'>-index 3909470dd66..ef6867ecdca 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index b64a7dd40af..3da3606cfd3 100644
</span> --- a/dlls/ntdll/unix/thread.c
 +++ b/dlls/ntdll/unix/thread.c
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1096,6 +1096,16 @@ static DECLSPEC_NORETURN void pthread_exit_wrapper( int status )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1099,6 +1099,16 @@ static DECLSPEC_NORETURN void pthread_exit_wrapper( int status )
</span>      close( ntdll_get_thread_data()->wait_fd[1] );
      close( ntdll_get_thread_data()->reply_fd );
      close( ntdll_get_thread_data()->request_fd );
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -826,18 +826,18 @@ index 3909470dd66..ef6867ecdca 100644
</span>  }
  
 diff --git a/dlls/ntdll/unix/virtual.c b/dlls/ntdll/unix/virtual.c
<span style='display:block; white-space:pre;background:#ffe0e0;'>-index 684a58a724b..bbe82086085 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 06a260cfe3f..06612e84440 100644
</span> --- a/dlls/ntdll/unix/virtual.c
 +++ b/dlls/ntdll/unix/virtual.c
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -62,6 +62,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #if defined(__APPLE__)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # include <mach/mach_init.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # include <mach/mach_vm.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -68,6 +68,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # include <mach/task.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # include <mach/thread_state.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # include <mach/vm_map.h>
</span> +# include <sys/utsname.h> /* CrossOver Hack #22011 */
  #endif
  
  #include "ntstatus.h"
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1744,6 +1745,42 @@ static void mprotect_range( void *base, size_t size, BYTE set, BYTE clear )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1750,6 +1751,42 @@ static void mprotect_range( void *base, size_t size, BYTE set, BYTE clear )
</span>      if (count) mprotect_exec( addr, count << page_shift, prot );
  }
  
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -880,7 +880,7 @@ index 684a58a724b..bbe82086085 100644
</span>  
  /***********************************************************************
   *           set_vprot
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -2114,7 +2151,7 @@ static NTSTATUS map_file_into_view( struct file_view *view, int fd, size_t start
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -2120,7 +2157,7 @@ static NTSTATUS map_file_into_view( struct file_view *view, int fd, size_t start
</span>      /* only try mmap if media is not removable (or if we require write access) */
      if (!removable || (flags & MAP_SHARED))
      {
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -889,7 +889,7 @@ index 684a58a724b..bbe82086085 100644
</span>              goto done;
  
          switch (errno)
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -2442,7 +2479,7 @@ static NTSTATUS map_pe_header( void *ptr, size_t size, int fd, BOOL *removable )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -2448,7 +2485,7 @@ static NTSTATUS map_pe_header( void *ptr, size_t size, int fd, BOOL *removable )
</span>  
      if (!*removable)
      {
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -898,7 +898,7 @@ index 684a58a724b..bbe82086085 100644
</span>              return STATUS_SUCCESS;
  
          switch (errno)
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -3943,7 +3980,7 @@ void virtual_map_user_shared_data(void)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -3962,7 +3999,7 @@ void virtual_map_user_shared_data(void)
</span>          exit(1);
      }
      if ((res = server_get_unix_fd( section, 0, &fd, &needs_close, NULL, NULL )) ||
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -907,7 +907,7 @@ index 684a58a724b..bbe82086085 100644
</span>      {
          ERR( "failed to remap the process USD: %d\n", res );
          exit(1);
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -6124,6 +6161,56 @@ NTSTATUS WINAPI NtReadVirtualMemory( HANDLE process, const void *addr, void *buf
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -6143,6 +6180,56 @@ NTSTATUS WINAPI NtReadVirtualMemory( HANDLE process, const void *addr, void *buf
</span>      return status;
  }
  
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -964,7 +964,7 @@ index 684a58a724b..bbe82086085 100644
</span>  
  /***********************************************************************
   *             NtWriteVirtualMemory   (NTDLL.@)
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -6144,6 +6231,10 @@ NTSTATUS WINAPI NtWriteVirtualMemory( HANDLE process, void *addr, const void *bu
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -6163,6 +6250,10 @@ NTSTATUS WINAPI NtWriteVirtualMemory( HANDLE process, void *addr, const void *bu
</span>              if ((status = wine_server_call( req ))) size = 0;
          }
          SERVER_END_REQ;
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1169,7 +1169,7 @@ index 6c6b2352bb6..2edac50a51c 100644
</span>      NtProtectVirtualMemory( GetCurrentProcess(), (void **)&thunk, &size, PAGE_EXECUTE_READ, &old_prot );
      return STATUS_SUCCESS;
 diff --git a/server/mach.c b/server/mach.c
<span style='display:block; white-space:pre;background:#ffe0e0;'>-index 86ff7eac382..c659857884f 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 0472e7a6701..aa34a56e887 100644
</span> --- a/server/mach.c
 +++ b/server/mach.c
 @@ -48,6 +48,7 @@
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1180,7 +1180,7 @@ index 86ff7eac382..c659857884f 100644
</span>  
  static mach_port_t server_mach_port;
  
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -172,6 +173,26 @@ void init_thread_context( struct thread *thread )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -175,6 +176,26 @@ void init_thread_context( struct thread *thread )
</span>  {
  }
  
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1205,9 +1205,9 @@ index 86ff7eac382..c659857884f 100644
</span> +}
 +
  /* retrieve the thread x86 registers */
<span style='display:block; white-space:pre;background:#ffe0e0;'>- void get_thread_context( struct thread *thread, context_t *context, unsigned int flags )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void get_thread_context( struct thread *thread, struct context_data *context, unsigned int flags )
</span>  {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -251,6 +272,13 @@ void get_thread_context( struct thread *thread, context_t *context, unsigned int
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -254,6 +275,13 @@ void get_thread_context( struct thread *thread, struct context_data *context, un
</span>          }
          context->flags |= SERVER_CTX_DEBUG_REGISTERS;
      }
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/emulators/wine-devel/files/0003-bug56854.diff b/emulators/wine-devel/files/0003-bug56854.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..4a2cf661869
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/emulators/wine-devel/files/0003-bug56854.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,23 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 05315ce3da4d6f04232611fb5dd6ffbd77f87ce7 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Alexandre Julliard <julliard@winehq.org>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Sat, 22 Feb 2025 09:34:55 +0100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH] ntdll: Fix pointer access in read_image_directory().
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=57854
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ dlls/ntdll/loader.c | 2 +-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 1 insertion(+), 1 deletion(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 33415b6dda8f..13a92af34053 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/dlls/ntdll/loader.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/dlls/ntdll/loader.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -2404,7 +2404,7 @@ static ULONG read_image_directory( HANDLE file, const SECTION_IMAGE_INFORMATION
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     offset.QuadPart += offsetof( IMAGE_NT_HEADERS32, OptionalHeader ) + nt.nt32.FileHeader.SizeOfOptionalHeader;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     count = nt.nt32.FileHeader.NumberOfSections;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if (!(sec = RtlAllocateHeap( GetProcessHeap(), 0, sizeof(*sec) * count ))) return 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    if (NtReadFile( file, 0, NULL, NULL, &io, &sec, count * sizeof(*sec), &offset, NULL )) goto done;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if (NtReadFile( file, 0, NULL, NULL, &io, sec, count * sizeof(*sec), &offset, NULL )) goto done;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if (io.Information != count * sizeof(*sec)) goto done;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     for (i = 0; i < count; i++)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     {
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/emulators/wine-devel/files/1002-staging-macos_hacks.diff b/emulators/wine-devel/files/1002-staging-macos_hacks.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..c070cf6dcd7
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/emulators/wine-devel/files/1002-staging-macos_hacks.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,24 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 2f9a947921463681456c645d926b8a5c4c3cb6ff Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Dean M Greer <38226388+Gcenx@users.noreply.github.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Mon, 24 Feb 2025 16:33:49 -0500
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH] macos_hacks_staging
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ dlls/kernelbase/process.c | 1 +
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 1 insertion(+)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/dlls/kernelbase/process.c b/dlls/kernelbase/process.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 4d70b83ee14..d951c3cd78e 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/dlls/kernelbase/process.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/dlls/kernelbase/process.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -514,6 +514,7 @@ static const WCHAR *hack_append_command_line( const WCHAR *cmd, const WCHAR *cmd
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     options[] =
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         {L"steamwebhelper.exe", L" --no-sandbox --in-process-gpu --disable-gpu", NULL, L"--type=crashpad-handler"},
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        {L"Battle.net.exe", L" --in-process-gpu --use-gl=swiftshader", NULL, NULL},
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     unsigned int i;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-- 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.39.5 (Apple Git-154)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/emulators/wine-devel/files/MR7448.diff b/emulators/wine-devel/files/MR7448.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..ed4d5dddbb3
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/emulators/wine-devel/files/MR7448.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,225 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 2cc634045596498bf09faacb8ecc18b7ee24a715 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Brendan Shanks <bshanks@codeweavers.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Fri, 28 Feb 2025 16:52:42 -0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 1/4] winegcc: Rename TOOL_ enum constants.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+macOS has conflicting TOOL_ defines in <mach-o/loader.h>.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ tools/winegcc/winegcc.c | 30 +++++++++++++++---------------
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 15 insertions(+), 15 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/tools/winegcc/winegcc.c b/tools/winegcc/winegcc.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 600bd171b89..5516ca196c3 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/tools/winegcc/winegcc.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/tools/winegcc/winegcc.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -236,11 +236,11 @@ static int is_pe_target( const struct options *opts )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ enum tool
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    TOOL_CC,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    TOOL_CXX,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    TOOL_CPP,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    TOOL_LD,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    TOOL_OBJCOPY,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    WINEGCC_TOOL_CC,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    WINEGCC_TOOL_CXX,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    WINEGCC_TOOL_CPP,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    WINEGCC_TOOL_LD,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    WINEGCC_TOOL_OBJCOPY,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static const struct
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -312,12 +312,12 @@ static struct strarray get_translator(struct options *opts)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     switch(opts->processor)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     case proc_cpp:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        return build_tool_name( opts, opts->target_alias, TOOL_CPP );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        return build_tool_name( opts, opts->target_alias, WINEGCC_TOOL_CPP );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     case proc_cc:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     case proc_as:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        return build_tool_name( opts, opts->target_alias, TOOL_CC );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        return build_tool_name( opts, opts->target_alias, WINEGCC_TOOL_CC );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     case proc_cxx:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        return build_tool_name( opts, opts->target_alias, TOOL_CXX );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        return build_tool_name( opts, opts->target_alias, WINEGCC_TOOL_CXX );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     assert(0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     return empty_strarray;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -639,8 +639,8 @@ static void compile(struct options* opts, const char* lang)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   /* mixing different C and C++ compilers isn't supported in configure anyway */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   case proc_cc:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   case proc_cxx:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            gcc = build_tool_name( opts, opts->target_alias, TOOL_CC );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            gpp = build_tool_name( opts, opts->target_alias, TOOL_CXX );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            gcc = build_tool_name( opts, opts->target_alias, WINEGCC_TOOL_CC );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            gpp = build_tool_name( opts, opts->target_alias, WINEGCC_TOOL_CXX );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             for ( j = 0; !gcc_defs && j < comp_args.count; j++ )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 const char *cc = comp_args.str[j];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -963,11 +963,11 @@ static void build_spec_obj( struct options *opts, const char *spec_file, const c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     /* get the filename from the path */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     output_name = get_basename( output_file );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    tool = build_tool_name( opts, target, TOOL_CC );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    tool = build_tool_name( opts, target, WINEGCC_TOOL_CC );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     strarray_add( &spec_args, strmake( "--cc-cmd=%s", strarray_tostring( tool, " " )));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if (!is_pe)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        tool = build_tool_name( opts, target, TOOL_LD );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        tool = build_tool_name( opts, target, WINEGCC_TOOL_LD );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         strarray_add( &spec_args, strmake( "--ld-cmd=%s", strarray_tostring( tool, " " )));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1362,7 +1362,7 @@ static void build(struct options* opts)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if (opts->debug_file && !strendswith(opts->debug_file, ".pdb"))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        struct strarray tool, objcopy = build_tool_name(opts, opts->target_alias, TOOL_OBJCOPY);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        struct strarray tool, objcopy = build_tool_name(opts, opts->target_alias, WINEGCC_TOOL_OBJCOPY);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         tool = empty_strarray;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         strarray_addall( &tool, objcopy );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1393,9 +1393,9 @@ static void build(struct options* opts)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             error("--out-implib requires a .spec or .def file\n");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         implib_args = get_winebuild_args( opts, opts->target_alias );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        tool = build_tool_name( opts, opts->target_alias, TOOL_CC );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        tool = build_tool_name( opts, opts->target_alias, WINEGCC_TOOL_CC );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         strarray_add( &implib_args, strmake( "--cc-cmd=%s", strarray_tostring( tool, " " )));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        tool = build_tool_name( opts, opts->target_alias, TOOL_LD );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        tool = build_tool_name( opts, opts->target_alias, WINEGCC_TOOL_LD );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         strarray_add( &implib_args, strmake( "--ld-cmd=%s", strarray_tostring( tool, " " )));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         strarray_add(&implib_args, "--implib");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-- 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+GitLab
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 7ca56806adef6068f5d05c821e1bd0ea78305528 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Brendan Shanks <bshanks@codeweavers.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Fri, 28 Feb 2025 16:55:40 -0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 2/4] tools: Use _NSGetExecutablePath to implement get_bindir
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ on macOS.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=57874
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ tools/tools.h | 9 +++++++++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 9 insertions(+)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/tools/tools.h b/tools/tools.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 319aff77da7..f017bab0e93 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/tools/tools.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/tools/tools.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -39,6 +39,9 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifdef HAVE_SYS_SYSCTL_H
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # include <sys/sysctl.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef __APPLE__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# include <mach-o/dyld.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifdef _WIN32
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # include <direct.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -705,6 +708,12 @@ static inline char *get_bindir( const char *argv0 )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if (!sysctl( pathname, ARRAY_SIZE(pathname), path, &path_size, NULL, 0 ))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         dir = realpath( path, NULL );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     free( path );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#elif defined(__APPLE__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    uint32_t path_size = PATH_MAX;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    char *path = xmalloc( path_size );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if (!_NSGetExecutablePath( path, &path_size ))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        dir = realpath( path, NULL );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    free( path );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if (!dir && !(dir = realpath( argv0, NULL ))) return NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     return get_dirname( dir );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-- 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+GitLab
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 9d024c3d321894b844bffd7f70db8bc95cefe948 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Brendan Shanks <bshanks@codeweavers.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Fri, 28 Feb 2025 16:57:41 -0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 3/4] server: Use _NSGetExecutablePath to implement get_nls_dir
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ on macOS.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ server/unicode.c | 14 ++++++++++++++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 14 insertions(+)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/server/unicode.c b/server/unicode.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index b4864310f83..bb39b55e50c 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/server/unicode.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/server/unicode.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -29,6 +29,9 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifdef HAVE_SYS_SYSCTL_H
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # include <sys/sysctl.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef __APPLE__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# include <mach-o/dyld.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "windef.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "winternl.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -290,6 +293,17 @@ static char *get_nls_dir(void)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             dir = NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#elif defined(__APPLE__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    uint32_t dir_size = PATH_MAX;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    dir = malloc( dir_size );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if (dir)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if (_NSGetExecutablePath( dir, &dir_size ))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            free( dir );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            dir = NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     dir = realpath( server_argv0, NULL );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-- 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+GitLab
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From a17a8fbda266820091cad3dd87e7bbb682cfcf65 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Brendan Shanks <bshanks@codeweavers.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Fri, 28 Feb 2025 17:01:58 -0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 4/4] loader: Use _NSGetExecutablePath to implement
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ get_self_exe on macOS.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ loader/main.c | 9 +++++++++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 9 insertions(+)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/loader/main.c b/loader/main.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 3467d29cb5c..f8b113f3136 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/loader/main.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/loader/main.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -34,6 +34,9 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifdef HAVE_SYS_SYSCTL_H
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # include <sys/sysctl.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef __APPLE__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# include <mach-o/dyld.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "main.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -134,6 +137,12 @@ static const char *get_self_exe(void)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if (path && !sysctl( pathname, sizeof(pathname)/sizeof(pathname[0]), path, &path_size, NULL, 0 ))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         return path;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     free( path );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#elif defined(__APPLE__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    uint32_t path_size = PATH_MAX;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    char *path = malloc( path_size );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if (path && !_NSGetExecutablePath( path, &path_size ))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        return path;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    free( path );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     return NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-- 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+GitLab
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span></pre><pre style='margin:0'>

</pre>