Mercurial > sdl-ios-xcode
comparison src/main/win32/SDL_win32_main.c @ 4511:ae7799d16c87
Daniel Wyatt 2010-03-26 14:52:53 PDT
If a non-console Windows SDL program has a non-quoted 0th argument followed
optionally by more non-quoted arguments and then by an empty quoted argument,
it will crash (attempts to dereference a NULL pointer).
In other words, something like this:
test.exe [non-quoted args] "" [...]
The fix is a one-liner in ParseCommandLine() of
src/main/win32/SDL_win32_main.c.
You can test this with any non-console SDL program on windows like this:
1) Open a console (cmd.exe)
2) Launch the program in one of the following ways:
program ""
program arg1 ""
program arg1 "" arg3
These will not cause a crash:
"program" [...]
program "arg1" ""
When a Windows program is launched from Explorer, its 0th argument seems to
always be quoted, so it won't be a problem in that case.
I've tested this on Windows XP SP3 and Windows 7.
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Mon, 12 Jul 2010 22:08:50 -0700 |
parents | 41a6675d8700 |
children |
comparison
equal
deleted
inserted
replaced
4510:6f8175ad0335 | 4511:ae7799d16c87 |
---|---|
69 argv[argc] = bufp; | 69 argv[argc] = bufp; |
70 } | 70 } |
71 ++argc; | 71 ++argc; |
72 } | 72 } |
73 /* Skip over word */ | 73 /* Skip over word */ |
74 lastp = bufp; | |
74 while (*bufp && (*bufp != '"' || *lastp == '\\')) { | 75 while (*bufp && (*bufp != '"' || *lastp == '\\')) { |
75 lastp = bufp; | 76 lastp = bufp; |
76 ++bufp; | 77 ++bufp; |
77 } | 78 } |
78 } else { | 79 } else { |