From: Eli Zaretskii Date: Tue, 12 Nov 2024 12:41:01 +0000 (+0200) Subject: Fix Cygw32 build X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=6a2fa2a8156a1fffb03e75915c4d4ac85645d7a9;p=emacs.git Fix Cygw32 build * src/pdumper.c (dump_mm_heap_cb_release): Avoid NULL pointer dereference. * src/w32dwrite.c (INITGUID) [CYGWIN]: Don't define for Cygwin. * src/w32menu.c (w32_popup_dialog): Fix Cygw32 build. (Bug#74312) (cherry picked from commit b54fa15ffbb959e97ea0b77bfeb9ae412a63b4e8) --- diff --git a/src/pdumper.c b/src/pdumper.c index c888b659dde..c0b36b1ca44 100644 --- a/src/pdumper.c +++ b/src/pdumper.c @@ -4853,11 +4853,14 @@ struct dump_memory_map_heap_control_block static void dump_mm_heap_cb_release (struct dump_memory_map_heap_control_block *cb) { - eassert (cb->refcount > 0); - if (--cb->refcount == 0) + if (cb) { - free (cb->mem); - free (cb); + eassert (cb->refcount > 0); + if (--cb->refcount == 0) + { + free (cb->mem); + free (cb); + } } } diff --git a/src/w32dwrite.c b/src/w32dwrite.c index 32e2644af2c..29f9d5f1fed 100644 --- a/src/w32dwrite.c +++ b/src/w32dwrite.c @@ -37,7 +37,7 @@ along with GNU Emacs. If not, see . */ #include #include -#ifndef MINGW_W64 +#if !defined MINGW_W64 && !defined CYGWIN # define INITGUID #endif #include @@ -659,7 +659,7 @@ w32_dwrite_encode_char (struct font *font, int c) if (dwrite_font_face == NULL) return FONT_INVALID_CODE; hr = dwrite_font_face->lpVtbl->GetGlyphIndices (dwrite_font_face, - &c, 1, &index); + (UINT32 *) &c, 1, &index); if (verify_hr (hr, "Failed to GetGlyphIndices")) { if (index == 0) diff --git a/src/w32menu.c b/src/w32menu.c index c3d147841b6..b5f87ebb42c 100644 --- a/src/w32menu.c +++ b/src/w32menu.c @@ -186,6 +186,11 @@ task_dialog_callback (HWND hwnd, UINT msg, WPARAM wParam, Lisp_Object w32_popup_dialog (struct frame *f, Lisp_Object header, Lisp_Object contents) { +#ifdef NTGUI_UNICODE + typedef int (WINAPI *WideCharToMultiByte_Proc)(UINT,DWORD,LPCWSTR,int,LPSTR, + int,LPCSTR,LPBOOL); + static MultiByteToWideChar_Proc pMultiByteToWideChar = MultiByteToWideChar; +#endif /* NTGUI_UNICODE */ check_window_system (f); if (task_dialog_indirect)