From b54fa15ffbb959e97ea0b77bfeb9ae412a63b4e8 Mon Sep 17 00:00:00 2001
From: Eli Zaretskii
Date: Tue, 12 Nov 2024 14:41:01 +0200
Subject: 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)
---
src/pdumper.c | 11 +++++++----
src/w32dwrite.c | 4 ++--
src/w32menu.c | 5 +++++
3 files changed, 14 insertions(+), 6 deletions(-)
(limited to 'src')
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)
--
cgit v1.2.1