MSVC: fix t0040-parse-options crash
authorMarat Radchenko <marat@slonopotamus.org>
Sun, 30 Mar 2014 11:08:21 +0000 (15:08 +0400)
committerJunio C Hamano <gitster@pobox.com>
Mon, 31 Mar 2014 18:54:27 +0000 (11:54 -0700)
On 64-bit MSVC, pointers are 64 bit but `long` is only 32.
Thus, casting string to `unsigned long`, which is redundand on other
platforms, throws away important bits and when later cast to `intptr_t`
results in corrupt pointer.

This patch fixes test-parse-options by replacing harming cast with
correct one.

Signed-off-by: Marat Radchenko <marat@slonopotamus.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
test-parse-options.c
index 434e8b892981e3b052437d1c7eb2668a70cf2dfa..6f6c65692dd4e896d8f24e1d0b836d11a62128fd 100644 (file)
@@ -60,7 +60,7 @@ int main(int argc, char **argv)
                OPT_STRING('o', NULL, &string, "str", "get another string"),
                OPT_NOOP_NOARG(0, "obsolete"),
                OPT_SET_PTR(0, "default-string", &string,
-                       "set string to default", (unsigned long)"default"),
+                       "set string to default", (intptr_t)"default"),
                OPT_STRING_LIST(0, "list", &list, "str", "add str to list"),
                OPT_GROUP("Magic arguments"),
                OPT_ARGUMENT("quux", "means --quux"),