wpp: Add explicit casts when mixing signed and unsigned integers.

Gerald Pfeifer gerald at pfeifer.com
Tue Feb 15 19:50:46 CST 2011


In ISO C, operations involving both signed and unsigned types are
using signed.  This patch avoids 18 compiler warnings using GCC
with somewhat stricter settings by making this explicit.

Gerald

---
 libs/wpp/ppy.y |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/libs/wpp/ppy.y b/libs/wpp/ppy.y
index 5f1566e..5691200 100644
--- a/libs/wpp/ppy.y
+++ b/libs/wpp/ppy.y
@@ -59,7 +59,7 @@
 	if(cv_signed(v1) && cv_signed(v2))		\
 		r.val.si = v1.val.si OP v2.val.si;	\
 	else if(cv_signed(v1) && !cv_signed(v2))	\
-		r.val.si = v1.val.si OP v2.val.ui;	\
+		r.val.si = v1.val.si OP (signed) v2.val.ui; \
 	else if(!cv_signed(v1) && cv_signed(v2))	\
 		r.val.si = v1.val.ui OP v2.val.si;	\
 	else						\
@@ -70,7 +70,7 @@
 	if(cv_signed(v1) && cv_signed(v2))		\
 		r.val.sl = v1.val.sl OP v2.val.sl;	\
 	else if(cv_signed(v1) && !cv_signed(v2))	\
-		r.val.sl = v1.val.sl OP v2.val.ul;	\
+		r.val.sl = v1.val.sl OP (signed long) v2.val.ul; \
 	else if(!cv_signed(v1) && cv_signed(v2))	\
 		r.val.sl = v1.val.ul OP v2.val.sl;	\
 	else						\
@@ -81,7 +81,7 @@
 	if(cv_signed(v1) && cv_signed(v2))		\
 		r.val.sll = v1.val.sll OP v2.val.sll;	\
 	else if(cv_signed(v1) && !cv_signed(v2))	\
-		r.val.sll = v1.val.sll OP v2.val.ull;	\
+		r.val.sll = v1.val.sll OP (signed long long) v2.val.ull; \
 	else if(!cv_signed(v1) && cv_signed(v2))	\
 		r.val.sll = v1.val.ull OP v2.val.sll;	\
 	else						\
-- 
1.7.4.1



More information about the wine-patches mailing list