Hello Charles,
On 09/18/2012 07:51 AM, Charles Davis wrote:
From: Charles Davis cdavis@mymail.mines.edu
Contrary to what a novice C programmer might expect, when you declare an array parameter to a function, what you actually get is a pointer. Therefore, using sizeof() on the parameter will return the size of a pointer, and not 8*sizeof(UINT) as was intended here. Since the array was
please fix it in a way to not confuse a novice C programmer; e.g. passing it a pointer to a MYSTRUCT. That way you can avoid the magic constant 8 too.
explicitly declared as being 8 elements long, just use the number 8 in the for loop instead.
dlls/oleaut32/tests/tmarshal.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/dlls/oleaut32/tests/tmarshal.c b/dlls/oleaut32/tests/tmarshal.c index be8ef94..ad56123 100644 --- a/dlls/oleaut32/tests/tmarshal.c +++ b/dlls/oleaut32/tests/tmarshal.c @@ -596,10 +596,10 @@ static HRESULT WINAPI Widget_VarArg( }
-static BOOL mystruct_uint_ordered(UINT uarr[8]) +static BOOL mystruct_uint_ordered(UINT uarr[]) { int i;
- for (i = 0; i < sizeof(uarr) / sizeof(uarr[0]); i++)
- for (i = 0; i < 8; i++) if (uarr[i] != i) return 0;
thanks bye michael