[PATCH] msvcrt: Implement __std_type_info_hash
Piotr Caban
piotr.caban at gmail.com
Wed Oct 5 03:56:54 CDT 2016
Hi Alexandre,
On 10/04/16 22:49, GOUJON Alexandre wrote:
> - MSVCRT_size_t hash = 0x811c9dc5;
> + MSVCRT_size_t hash;
> + MSVCRT_size_t fnvPrime;
> const char *p;
>
> + if(sizeof(void*) == sizeof(int))
> + {
> + hash = 0x811c9dc5;
> + fnvPrime = 0x1000193;
> + }
> + else
> + {
> + hash = 0xcbf29ce484222325;
> + fnvPrime = 0x100000001b3;
> + }
> +
Please change name of fnvPrime variable to something like fnv_prime.
Also you will need to initialize it using #ifdef, something like this
should work:
#ifdef _WIN64
MSVCRT_size_t hash = ...
#else
MSVCRT_size_t hash = ...
#endif
> + return hash ^ (hash >> 32);
This will also cause compilation warning during 32-bit compilation.
> diff --git a/dlls/ucrtbase/tests/cpp.c b/dlls/ucrtbase/tests/cpp.c
> index 1a01fea..659269c 100644
> --- a/dlls/ucrtbase/tests/cpp.c
> +++ b/dlls/ucrtbase/tests/cpp.c
> @@ -163,7 +163,7 @@ static void test___std_type_info(void)
> ti1.mangled[2] = 0;
> hash1 = p___std_type_info_hash(&ti1);
> #ifdef _WIN64
> - todo_wine ok(hash1 == 0xcbf29ce44fd0bfc1, "hash = %p\n", (void*)hash1);
> + ok(hash1 == 0xcbf29ce44fd0bfc1, "hash = %p\n", (void*)hash1);
And this.
Thanks,
Piotr
More information about the wine-devel
mailing list