From d72e7c4fd41c0ab400d9eb748e3b4f8d545ea948 Mon Sep 17 00:00:00 2001 From: Po Lu Date: Sun, 13 Feb 2022 00:48:55 +0000 Subject: [PATCH] Fix the Haiku port * src/haiku_support.h [__cplusplus]: Define `specpdl_ref' type on C++ since that code cannot include lisp.h. --- src/haiku_support.h | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/haiku_support.h b/src/haiku_support.h index f20b2e766c8..e6560f401ac 100644 --- a/src/haiku_support.h +++ b/src/haiku_support.h @@ -348,6 +348,24 @@ struct haiku_menu_bar_state_event #define BE_RECT_WIDTH(rect) (ceil (((rect).right - (rect).left) + 1)) #endif /* __cplusplus */ +/* C++ code cannot include lisp.h, but file dialogs need to be able + to bind to the specpdl and handle quitting correctly. */ + +#ifdef __cplusplus + +#if SIZE_MAX > 0xffffffff +#define WRAP_SPECPDL_REF 1 +#endif +#ifdef WRAP_SPECPDL_REF +typedef struct { ptrdiff_t bytes; } specpdl_ref; +#else +typedef ptrdiff_t specpdl_ref; +#endif + +#else +#include "lisp.h" +#endif + #ifdef __cplusplus extern "C" { -- 2.39.5