Alexandre Julliard : vcomp: Fix signed char issues.

Alexandre Julliard julliard at winehq.org
Mon Nov 4 16:40:25 CST 2019


Module: wine
Branch: master
Commit: 010d44a2ac4a420dc1b3f6e43372bfd067a3db2b
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=010d44a2ac4a420dc1b3f6e43372bfd067a3db2b

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Mon Nov  4 15:14:35 2019 +0100

vcomp: Fix signed char issues.

Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/vcomp/main.c        | 12 ++++++------
 dlls/vcomp/tests/vcomp.c | 14 +++++++-------
 2 files changed, 13 insertions(+), 13 deletions(-)

diff --git a/dlls/vcomp/main.c b/dlls/vcomp/main.c
index 686984709a..3c6d48d41c 100644
--- a/dlls/vcomp/main.c
+++ b/dlls/vcomp/main.c
@@ -431,10 +431,10 @@ void CDECL _vcomp_atomic_and_i1(char *dest, char val)
     do old = *dest; while (interlocked_cmpxchg8(dest, old & val, old) != old);
 }
 
-void CDECL _vcomp_atomic_div_i1(char *dest, char val)
+void CDECL _vcomp_atomic_div_i1(signed char *dest, signed char val)
 {
-    char old;
-    do old = *dest; while (interlocked_cmpxchg8(dest, old / val, old) != old);
+    signed char old;
+    do old = *dest; while ((signed char)interlocked_cmpxchg8((char *)dest, old / val, old) != old);
 }
 
 void CDECL _vcomp_atomic_div_ui1(unsigned char *dest, unsigned char val)
@@ -461,10 +461,10 @@ void CDECL _vcomp_atomic_shl_i1(char *dest, unsigned int val)
     do old = *dest; while (interlocked_cmpxchg8(dest, old << val, old) != old);
 }
 
-void CDECL _vcomp_atomic_shr_i1(char *dest, unsigned int val)
+void CDECL _vcomp_atomic_shr_i1(signed char *dest, unsigned int val)
 {
-    char old;
-    do old = *dest; while (interlocked_cmpxchg8(dest, old >> val, old) != old);
+    signed char old;
+    do old = *dest; while ((signed char)interlocked_cmpxchg8((char *)dest, old >> val, old) != old);
 }
 
 void CDECL _vcomp_atomic_shr_ui1(unsigned char *dest, unsigned int val)
diff --git a/dlls/vcomp/tests/vcomp.c b/dlls/vcomp/tests/vcomp.c
index ea62909756..a8b80a0e22 100644
--- a/dlls/vcomp/tests/vcomp.c
+++ b/dlls/vcomp/tests/vcomp.c
@@ -1549,7 +1549,7 @@ static void test_atomic_integer8(void)
     struct
     {
         void (CDECL *func)(char *, char);
-        char v1, v2, expected;
+        signed char v1, v2, expected;
     }
     tests1[] =
     {
@@ -1566,9 +1566,9 @@ static void test_atomic_integer8(void)
     struct
     {
         void (CDECL *func)(char *, unsigned int);
-        char v1;
+        signed char v1;
         unsigned int v2;
-        char expected;
+        signed char expected;
     }
     tests2[] =
     {
@@ -1616,14 +1616,14 @@ static void test_atomic_integer8(void)
 
     for (i = 0; i < ARRAY_SIZE(tests1); i++)
     {
-        char val = tests1[i].v1;
-        tests1[i].func(&val, tests1[i].v2);
+        signed char val = tests1[i].v1;
+        tests1[i].func((char *)&val, tests1[i].v2);
         ok(val == tests1[i].expected, "test %d: expected val == %d, got %d\n", i, tests1[i].expected, val);
     }
     for (i = 0; i < ARRAY_SIZE(tests2); i++)
     {
-        char val = tests2[i].v1;
-        tests2[i].func(&val, tests2[i].v2);
+        signed char val = tests2[i].v1;
+        tests2[i].func((char *)&val, tests2[i].v2);
         ok(val == tests2[i].expected, "test %d: expected val == %d, got %d\n", i, tests2[i].expected, val);
     }
     for (i = 0; i < ARRAY_SIZE(tests3); i++)




More information about the wine-cvs mailing list