From ea4359e97e8e3f6d09167b4d8baddb6d911bacb4 Mon Sep 17 00:00:00 2001
From: Arne Goedeke <el@laramies.com>
Date: Wed, 2 Jul 2014 11:49:36 +0200
Subject: [PATCH] TYPE_SUBTYPE: avoid undefined behavior

(X) << 16 cannot always be represented by an int
---
 src/svalue.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/svalue.h b/src/svalue.h
index 10415db3c9..58eb7548ad 100644
--- a/src/svalue.h
+++ b/src/svalue.h
@@ -151,9 +151,9 @@ struct svalue
 #define SET_SVAL_TYPE_DC(SVAL, TYPE)	SET_SVAL_TYPE(SVAL, TYPE)
 #else
 #if PIKE_BYTEORDER == 1234
-#define TYPE_SUBTYPE(X,Y) ((X)|((Y)<<16))
+#define TYPE_SUBTYPE(X,Y) ((unsigned int)(X)|((unsigned int)(Y)<<16))
 #else
-#define TYPE_SUBTYPE(X,Y) ((Y)|((X)<<16))
+#define TYPE_SUBTYPE(X,Y) ((unsigned int)(Y)|((unsigned int)(X)<<16))
 #endif
 
 #define SET_SVAL_TYPE_SUBTYPE(SVAL, TYPE, SUBTYPE) \
-- 
GitLab