]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix the Haiku port
authorPo Lu <luangruo@yahoo.com>
Sun, 13 Feb 2022 00:48:55 +0000 (00:48 +0000)
committerPo Lu <luangruo@yahoo.com>
Sun, 13 Feb 2022 00:50:50 +0000 (00:50 +0000)
* src/haiku_support.h [__cplusplus]: Define `specpdl_ref' type
on C++ since that code cannot include lisp.h.

src/haiku_support.h

index f20b2e766c80b9ef341054743ca10f55d04f95fd..e6560f401ac2aeb28214aa9cb9a9a5502a3d8ee2 100644 (file)
@@ -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"
 {