1.0.11.28: Fix one Win32 regression introduced by 1.0.11.26-27.
[sbcl.git] / src / runtime / runtime.h
index 2fce3fd..eaa233a 100644 (file)
@@ -80,12 +80,14 @@ typedef unsigned int lispobj;
 #endif
 
 static inline int
-lowtag_of(lispobj obj) {
+lowtag_of(lispobj obj)
+{
     return obj & LOWTAG_MASK;
 }
 
 static inline int
-widetag_of(lispobj obj) {
+widetag_of(lispobj obj)
+{
     return obj & WIDETAG_MASK;
 }
 
@@ -128,6 +130,7 @@ native_pointer(lispobj obj)
 {
     return (lispobj *) ((pointer_sized_uint_t) (obj & ~LOWTAG_MASK));
 }
+
 /* inverse operation: create a suitably tagged lispobj from a native
  * pointer or integer.  Needs to be a macro due to the tedious C type
  * system */
@@ -138,7 +141,19 @@ native_pointer(lispobj obj)
 #define make_fixnum(n) ((lispobj)((n)<<N_FIXNUM_TAG_BITS))
 #define fixnum_value(n) (((long)n)>>N_FIXNUM_TAG_BITS)
 
-/* Too bad ANSI C doesn't define "bool" as C++ does.. */
+#if defined(LISP_FEATURE_WIN32)
+/* KLUDGE: Avoid double definition of boolean by rpcndr.h included via
+ * shlobj.h.
+ *
+ * FIXME: We should probably arrange to use the rpcndr.h boolean on Windows,
+ * or get rid of our own boolean type.  If the boolean type is only used in
+ * the runtime, and never passed to Lisp, then it doesn't matter which one
+ * we use.
+ */
+#define boolean rpcndr_boolean
+#include <shlobj.h>
+#undef boolean
+#endif
 typedef int boolean;
 
 /* This only works for static symbols. */