From 56e7591ada3967ed1ec799b20bed6d2645cf31f1 Mon Sep 17 00:00:00 2001 From: Nick Briggs Date: Fri, 17 Nov 2023 13:11:11 -0800 Subject: [PATCH] Although an unlikely case, LispNumToCInt() should handle negative SmallP numbers correctly --- inc/locfile.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/inc/locfile.h b/inc/locfile.h index 42500b5..22f6739 100644 --- a/inc/locfile.h +++ b/inc/locfile.h @@ -194,8 +194,9 @@ do { \ #endif /* min */ #define LispNumToCInt(Lisp) \ - ( (((Lisp) & SEGMASK) == S_POSITIVE) ? \ - ((Lisp) & 0xFFFF) : (*((int *)(NativeAligned4FromLAddr(Lisp)))) ) + ( (((Lisp) & SEGMASK) == S_POSITIVE) ? ((Lisp) & 0xFFFF) : \ + (((Lisp) & SEGMASK) == S_NEGATIVE) ? ((Lisp) | 0xFFFF0000) : \ + (*((int *)(NativeAligned4FromLAddr(Lisp)))) ) #define UPLOWDIFF 0x20