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

Summary: Patch for crash on windows in ParseCommandLine()
Product: SDL Reporter: Daniel.Wyatt
Component: mainAssignee: Ryan C. Gordon <icculus>
Status: RESOLVED FIXED QA Contact: Sam Lantinga <slouken>
Severity: major    
Priority: P2    
Version: HG 2.0   
Hardware: All   
OS: Windows (All)   
Attachments: Patch for SDL_win32_main.c.

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!