[PATCH] msvcirt/tests: Fix uninitialized variable warning.
Eric Pouech
eric.pouech at gmail.com
Sun Feb 13 10:15:50 CST 2022
also detecting erroneous parameter in function pointer calling
Derived from a patch of Piotr Caban <piotr at codeweavers.com>
I found a bit disturbing to remove only the const void* cast from the call4
macro (even if this is the only macro where the warning arises)
this patch remove all const casts (they are not needed anyway, we just need
a type which size is the one of a machine word)
if the concern is catching wrong parameters' types, the proposed evolution
of the macros should help (on a 32 bit compilation; they are already
generated on a 64bit compilation)
Signed-off-by: Eric Pouech <eric.pouech at gmail.com>
---
dlls/msvcirt/tests/Makefile.in | 1
dlls/msvcirt/tests/msvcirt.c | 101 +++++++++++++++++++++-------------------
2 files changed, 52 insertions(+), 50 deletions(-)
diff --git a/dlls/msvcirt/tests/Makefile.in b/dlls/msvcirt/tests/Makefile.in
index 3bbb592aa6f..340d2e00996 100644
--- a/dlls/msvcirt/tests/Makefile.in
+++ b/dlls/msvcirt/tests/Makefile.in
@@ -1,4 +1,3 @@
-EXTRADEFS = -DWINE_NO_LONG_TYPES
TESTDLL = msvcirt.dll
C_SRCS = msvcirt.c
diff --git a/dlls/msvcirt/tests/msvcirt.c b/dlls/msvcirt/tests/msvcirt.c
index 43ffb277ed4..bf261b1d5f1 100644
--- a/dlls/msvcirt/tests/msvcirt.c
+++ b/dlls/msvcirt/tests/msvcirt.c
@@ -505,12 +505,12 @@ struct thiscall_thunk
#include "poppack.h"
static void * (WINAPI *call_thiscall_func1)( void *func, void *this );
-static void * (WINAPI *call_thiscall_func2)( void *func, void *this, const void *a );
-static void * (WINAPI *call_thiscall_func3)( void *func, void *this, const void *a, const void *b );
-static void * (WINAPI *call_thiscall_func4)( void *func, void *this, const void *a, const void *b,
- const void *c );
-static void * (WINAPI *call_thiscall_func5)( void *func, void *this, const void *a, const void *b,
- const void *c, const void *d );
+static void * (WINAPI *call_thiscall_func2)( void *func, void *this, void *a );
+static void * (WINAPI *call_thiscall_func3)( void *func, void *this, void *a, void *b );
+static void * (WINAPI *call_thiscall_func4)( void *func, void *this, void *a, void *b,
+ void *c );
+static void * (WINAPI *call_thiscall_func5)( void *func, void *this, void *a, void *b,
+ void *c, void *d );
static void * (WINAPI *call_thiscall_func2_ptr_dbl)( void *func, void *this, double a );
static void * (WINAPI *call_thiscall_func2_ptr_flt)( void *func, void *this, float a );
@@ -532,13 +532,16 @@ static void init_thiscall_thunk(void)
call_thiscall_func2_ptr_flt = (void *)thunk;
}
-#define call_func1(func,_this) call_thiscall_func1(func,_this)
-#define call_func2(func,_this,a) call_thiscall_func2(func,_this,(const void*)(a))
-#define call_func3(func,_this,a,b) call_thiscall_func3(func,_this,(const void*)(a),(const void*)(b))
-#define call_func4(func,_this,a,b,c) call_thiscall_func4(func,_this,(const void*)(a),(const void*)(b), \
- (const void*)(c))
-#define call_func5(func,_this,a,b,c,d) call_thiscall_func5(func,_this,(const void*)(a),(const void*)(b), \
- (const void*)(c), (const void *)(d))
+#define call_func1(func,_this) ((1)?0:(func(_this),0),call_thiscall_func1(func,_this))
+#define call_func2(func,_this,a) ((1)?0:(func(_this,a),0),call_thiscall_func2(func,_this,(void*)(a)))
+#define call_func3(func,_this,a,b) ((1)?0:(func(_this,a,b),0), \
+ call_thiscall_func3(func,_this,(void*)(a),(void*)(b)))
+#define call_func4(func,_this,a,b,c) ((1)?0:(func(_this,a,b,c),0), \
+ call_thiscall_func4(func,_this,(void*)(a),(void*)(b), \
+ (void*)(c)))
+#define call_func5(func,_this,a,b,c,d) ((1)?0:(func(_this,a,b,c,d),0), \
+ call_thiscall_func5(func,_this,(void*)(a),(void*)(b), \
+ (void*)(c), (void *)(d)))
#define call_func2_ptr_dbl(func,_this,a) call_thiscall_func2_ptr_dbl(func,_this,a)
#define call_func2_ptr_flt(func,_this,a) call_thiscall_func2_ptr_flt(func,_this,a)
@@ -1198,13 +1201,13 @@ static void test_streambuf(void)
ok(sb.unbuffered == 0, "wrong unbuffered value, expected 0 got %d\n", sb.unbuffered);
ok(sb.base == NULL, "wrong base pointer, expected %p got %p\n", NULL, sb.base);
ok(sb.ebuf == NULL, "wrong ebuf pointer, expected %p got %p\n", NULL, sb.ebuf);
- ok(sb.lock.LockCount == -1, "wrong critical section state, expected -1 got %d\n", sb.lock.LockCount);
+ ok(sb.lock.LockCount == -1, "wrong critical section state, expected -1 got %ld\n", sb.lock.LockCount);
call_func3(p_streambuf_reserve_ctor, &sb2, reserve, 16);
ok(sb2.allocated == 0, "wrong allocate value, expected 0 got %d\n", sb2.allocated);
ok(sb2.unbuffered == 0, "wrong unbuffered value, expected 0 got %d\n", sb2.unbuffered);
ok(sb2.base == reserve, "wrong base pointer, expected %p got %p\n", reserve, sb2.base);
ok(sb2.ebuf == reserve+16, "wrong ebuf pointer, expected %p got %p\n", reserve+16, sb2.ebuf);
- ok(sb.lock.LockCount == -1, "wrong critical section state, expected -1 got %d\n", sb.lock.LockCount);
+ ok(sb.lock.LockCount == -1, "wrong critical section state, expected -1 got %ld\n", sb.lock.LockCount);
call_func1(p_streambuf_ctor, &sb3);
ok(sb3.allocated == 0, "wrong allocate value, expected 0 got %d\n", sb3.allocated);
ok(sb3.unbuffered == 0, "wrong unbuffered value, expected 0 got %d\n", sb3.unbuffered);
@@ -3061,7 +3064,7 @@ static void test_ios(void)
ok(ios_obj.fill == ' ', "expected ' ' got %d\n", ios_obj.fill);
ok(ios_obj.width == 0, "expected 0 got %d\n", ios_obj.width);
ok(ios_obj.do_lock == -1, "expected -1 got %d\n", ios_obj.do_lock);
- ok(ios_obj.lock.LockCount == -1, "expected -1 got %d\n", ios_obj.lock.LockCount);
+ ok(ios_obj.lock.LockCount == -1, "expected -1 got %ld\n", ios_obj.lock.LockCount);
ok(*p_ios_fLockcInit == 5, "expected 5 got %d\n", *p_ios_fLockcInit);
ios_obj.state = 0x8;
call_func1(p_ios_dtor, &ios_obj);
@@ -3194,64 +3197,64 @@ static void test_ios(void)
/* flags */
ios_obj.flags = 0x8000;
ret = (LONG) call_func1(p_ios_flags_get, &ios_obj);
- ok(ret == 0x8000, "expected %x got %x\n", 0x8000, ret);
+ ok(ret == 0x8000, "expected %x got %lx\n", 0x8000, ret);
ret = (LONG) call_func2(p_ios_flags_set, &ios_obj, 0x444);
- ok(ret == 0x8000, "expected %x got %x\n", 0x8000, ret);
+ ok(ret == 0x8000, "expected %x got %lx\n", 0x8000, ret);
ok(ios_obj.flags == 0x444, "expected %x got %x\n", 0x444, ios_obj.flags);
ret = (LONG) call_func2(p_ios_flags_set, &ios_obj, 0);
- ok(ret == 0x444, "expected %x got %x\n", 0x444, ret);
+ ok(ret == 0x444, "expected %x got %lx\n", 0x444, ret);
ok(ios_obj.flags == 0, "expected %x got %x\n", 0, ios_obj.flags);
/* setf */
ios_obj.do_lock = 0;
ios_obj.flags = 0x8400;
ret = (LONG) call_func2(p_ios_setf, &ios_obj, 0x444);
- ok(ret == 0x8400, "expected %x got %x\n", 0x8400, ret);
+ ok(ret == 0x8400, "expected %x got %lx\n", 0x8400, ret);
ok(ios_obj.flags == 0x8444, "expected %x got %x\n", 0x8444, ios_obj.flags);
ret = (LONG) call_func3(p_ios_setf_mask, &ios_obj, 0x111, 0);
- ok(ret == 0x8444, "expected %x got %x\n", 0x8444, ret);
+ ok(ret == 0x8444, "expected %x got %lx\n", 0x8444, ret);
ok(ios_obj.flags == 0x8444, "expected %x got %x\n", 0x8444, ios_obj.flags);
ret = (LONG) call_func3(p_ios_setf_mask, &ios_obj, 0x111, 0x105);
- ok(ret == 0x8444, "expected %x got %x\n", 0x8444, ret);
+ ok(ret == 0x8444, "expected %x got %lx\n", 0x8444, ret);
ok(ios_obj.flags == 0x8541, "expected %x got %x\n", 0x8541, ios_obj.flags);
/* unsetf */
ret = (LONG) call_func2(p_ios_unsetf, &ios_obj, 0x1111);
- ok(ret == 0x8541, "expected %x got %x\n", 0x8541, ret);
+ ok(ret == 0x8541, "expected %x got %lx\n", 0x8541, ret);
ok(ios_obj.flags == 0x8440, "expected %x got %x\n", 0x8440, ios_obj.flags);
ret = (LONG) call_func2(p_ios_unsetf, &ios_obj, 0x8008);
- ok(ret == 0x8440, "expected %x got %x\n", 0x8440, ret);
+ ok(ret == 0x8440, "expected %x got %lx\n", 0x8440, ret);
ok(ios_obj.flags == 0x440, "expected %x got %x\n", 0x440, ios_obj.flags);
ios_obj.do_lock = -1;
/* state */
ios_obj.state = 0x8;
ret = (LONG) call_func1(p_ios_good, &ios_obj);
- ok(ret == 0, "expected 0 got %d\n", ret);
+ ok(ret == 0, "expected 0 got %ld\n", ret);
ios_obj.state = IOSTATE_goodbit;
ret = (LONG) call_func1(p_ios_good, &ios_obj);
- ok(ret == 1, "expected 1 got %d\n", ret);
+ ok(ret == 1, "expected 1 got %ld\n", ret);
ret = (LONG) call_func1(p_ios_bad, &ios_obj);
- ok(ret == 0, "expected 0 got %d\n", ret);
+ ok(ret == 0, "expected 0 got %ld\n", ret);
ios_obj.state = (IOSTATE_eofbit|IOSTATE_badbit);
ret = (LONG) call_func1(p_ios_bad, &ios_obj);
- ok(ret == IOSTATE_badbit, "expected 4 got %d\n", ret);
+ ok(ret == IOSTATE_badbit, "expected 4 got %ld\n", ret);
ret = (LONG) call_func1(p_ios_eof, &ios_obj);
- ok(ret == IOSTATE_eofbit, "expected 1 got %d\n", ret);
+ ok(ret == IOSTATE_eofbit, "expected 1 got %ld\n", ret);
ios_obj.state = 0x8;
ret = (LONG) call_func1(p_ios_eof, &ios_obj);
- ok(ret == 0, "expected 0 got %d\n", ret);
+ ok(ret == 0, "expected 0 got %ld\n", ret);
ret = (LONG) call_func1(p_ios_fail, &ios_obj);
- ok(ret == 0, "expected 0 got %d\n", ret);
+ ok(ret == 0, "expected 0 got %ld\n", ret);
ios_obj.state = IOSTATE_badbit;
ret = (LONG) call_func1(p_ios_fail, &ios_obj);
- ok(ret == IOSTATE_badbit, "expected 4 got %d\n", ret);
+ ok(ret == IOSTATE_badbit, "expected 4 got %ld\n", ret);
ios_obj.state = (IOSTATE_eofbit|IOSTATE_failbit);
ret = (LONG) call_func1(p_ios_fail, &ios_obj);
- ok(ret == IOSTATE_failbit, "expected 2 got %d\n", ret);
+ ok(ret == IOSTATE_failbit, "expected 2 got %ld\n", ret);
ios_obj.state = (IOSTATE_eofbit|IOSTATE_failbit|IOSTATE_badbit);
ret = (LONG) call_func1(p_ios_fail, &ios_obj);
- ok(ret == (IOSTATE_failbit|IOSTATE_badbit), "expected 6 got %d\n", ret);
+ ok(ret == (IOSTATE_failbit|IOSTATE_badbit), "expected 6 got %ld\n", ret);
ios_obj.do_lock = 0;
call_func2(p_ios_clear, &ios_obj, 0);
ok(ios_obj.state == IOSTATE_goodbit, "expected 0 got %d\n", ios_obj.state);
@@ -3265,8 +3268,8 @@ static void test_ios(void)
expected = 0x10000;
for (i = 0; i < 20; i++) {
ret = p_ios_bitalloc();
- ok(ret == expected, "expected %x got %x\n", expected, ret);
- ok(*p_ios_maxbit == expected, "expected %x got %x\n", expected, *p_ios_maxbit);
+ ok(ret == expected, "expected %lx got %lx\n", expected, ret);
+ ok(*p_ios_maxbit == expected, "expected %lx got %lx\n", expected, *p_ios_maxbit);
expected <<= 1;
}
@@ -3275,17 +3278,17 @@ static void test_ios(void)
expected = 0;
for (i = 0; i < 8; i++) {
ret = p_ios_xalloc();
- ok(ret == expected, "expected %d got %d\n", expected, ret);
- ok(*p_ios_curindex == expected, "expected %d got %d\n", expected, *p_ios_curindex);
+ ok(ret == expected, "expected %ld got %ld\n", expected, ret);
+ ok(*p_ios_curindex == expected, "expected %ld got %d\n", expected, *p_ios_curindex);
pret = call_func2(p_ios_iword, &ios_obj, ret);
ok(pret == &p_ios_statebuf[ret], "expected %p got %p\n", &p_ios_statebuf[ret], pret);
- ok(*pret == 0, "expected 0 got %d\n", *pret);
+ ok(*pret == 0, "expected 0 got %ld\n", *pret);
pret2 = call_func2(p_ios_pword, &ios_obj, ret);
ok(pret2 == (void**)&p_ios_statebuf[ret], "expected %p got %p\n", (void**)&p_ios_statebuf[ret], pret2);
expected++;
}
ret = p_ios_xalloc();
- ok(ret == -1, "expected -1 got %d\n", ret);
+ ok(ret == -1, "expected -1 got %ld\n", ret);
ok(*p_ios_curindex == 7, "expected 7 got %d\n", *p_ios_curindex);
SetEvent(lock_arg.release[1]);
@@ -4054,7 +4057,7 @@ static void test_ostream_print(void)
ok(os.base_ios.state == tests[i].expected_flags, "Test %d: expected %d got %d\n", i,
tests[i].expected_flags, os.base_ios.state);
ok(os.base_ios.width == 0, "Test %d: expected 0 got %d\n", i, os.base_ios.width);
- ok(expected_length == length, "Test %d: wrong output length, expected %d got %d\n", i, expected_length, length);
+ ok(expected_length == length, "Test %d: wrong output length, expected %ld got %ld\n", i, expected_length, length);
ok(!strncmp(tests[i].expected_text, ssb.base.pbase, length),
"Test %d: wrong output, expected '%s' got '%s'\n", i, tests[i].expected_text, ssb.base.pbase);
}
@@ -6542,13 +6545,13 @@ static void test_istream_read(void)
case type_long:
l = 123456789l;
pis = call_func2(p_istream_read_long, &is, &l);
- ok(l == long_out[tests[i].expected_val], "Test %d: expected %d got %d\n", i,
+ ok(l == long_out[tests[i].expected_val], "Test %d: expected %ld got %ld\n", i,
long_out[tests[i].expected_val], l);
break;
case type_ulong:
ul = 123456789ul;
pis = call_func2(p_istream_read_unsigned_long, &is, &ul);
- ok(ul == ulong_out[tests[i].expected_val], "Test %d: expected %u got %u\n", i,
+ ok(ul == ulong_out[tests[i].expected_val], "Test %d: expected %lu got %lu\n", i,
ulong_out[tests[i].expected_val], ul);
break;
case type_flt:
@@ -8828,24 +8831,24 @@ static void test_mtlock_mtunlock(void)
p__mtlock(&crit);
thread = CreateThread(NULL, 0, _try_enter_critical, &crit, 0, NULL);
- ok(thread != NULL, "failed to create a thread, error: %x\n", GetLastError());
+ ok(thread != NULL, "failed to create a thread, error: %lx\n", GetLastError());
ret = WaitForSingleObject(thread, 1000);
- ok(ret == WAIT_OBJECT_0, "failed to wait for the thread, ret: %d, error: %x\n", ret, GetLastError());
+ ok(ret == WAIT_OBJECT_0, "failed to wait for the thread, ret: %ld, error: %lx\n", ret, GetLastError());
ok(GetExitCodeThread(thread, &exit_code), "failed to get exit code of the thread\n");
ok(exit_code == FALSE, "the thread entered critical section\n");
ret = CloseHandle(thread);
- ok(ret, "failed to close thread's handle, error: %x\n", GetLastError());
+ ok(ret, "failed to close thread's handle, error: %lx\n", GetLastError());
p__mtunlock(&crit);
thread = CreateThread(NULL, 0, _try_enter_critical, &crit, 0, NULL);
- ok(thread != NULL, "failed to create a thread, error: %x\n", GetLastError());
+ ok(thread != NULL, "failed to create a thread, error: %lx\n", GetLastError());
ret = WaitForSingleObject(thread, 1000);
- ok(ret == WAIT_OBJECT_0, "failed to wait for the thread, ret: %d, error: %x\n", ret, GetLastError());
+ ok(ret == WAIT_OBJECT_0, "failed to wait for the thread, ret: %ld, error: %lx\n", ret, GetLastError());
ok(GetExitCodeThread(thread, &exit_code), "failed to get exit code of the thread\n");
ok(exit_code == TRUE, "the thread was not able to enter critical section\n");
ret = CloseHandle(thread);
- ok(ret, "failed to close thread's handle, error: %x\n", GetLastError());
+ ok(ret, "failed to close thread's handle, error: %lx\n", GetLastError());
}
START_TEST(msvcirt)
More information about the wine-devel
mailing list