We are currently migrating Bugzilla to GitHub issues.
Any changes made to the bug tracker now will be lost, so please do not post new bugs or make changes to them.
When we're done, all bug URLs will redirect to their equivalent location on the new bug tracker.

Bug 975 - Patch for crash on windows in ParseCommandLine()
Summary: Patch for crash on windows in ParseCommandLine()
Status: RESOLVED FIXED
Alias: None
Product: SDL
Classification: Unclassified
Component: main (show other bugs)
Version: HG 2.0
Hardware: All Windows (All)
: P2 major
Assignee: Ryan C. Gordon
QA Contact: Sam Lantinga
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-03-26 14:52 UTC by Daniel.Wyatt
Modified: 2010-07-12 22:09 UTC (History)
0 users

See Also:


Attachments
Patch for SDL_win32_main.c. (446 bytes, patch)
2010-03-26 14:55 UTC, Daniel.Wyatt
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Daniel.Wyatt 2010-03-26 14:52:53 UTC
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.

I'm hoping this one-liner patch qualifies me as a prospective GSoC 2010 student.
Comment 1 Daniel.Wyatt 2010-03-26 14:55:29 UTC
Created attachment 501 [details]
Patch for SDL_win32_main.c.
Comment 2 Daniel.Wyatt 2010-03-26 14:56:57 UTC
Sorry about the whitespace foul up there :P
Comment 3 Sam Lantinga 2010-07-12 22:09:07 UTC
This is in Mercurial, thanks!