From 1d5e789cd60f3009df42593527d6c33e18449c10 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sat, 10 Nov 2012 10:37:38 -0800 Subject: [PATCH] Fixed command line parsing for applications defining UNICODE --- src/main/windows/SDL_windows_main.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/main/windows/SDL_windows_main.c b/src/main/windows/SDL_windows_main.c index 0b483e06e..52ea60f5c 100644 --- a/src/main/windows/SDL_windows_main.c +++ b/src/main/windows/SDL_windows_main.c @@ -146,22 +146,22 @@ console_main(int argc, char *argv[]) /* This is where execution begins [windowed apps] */ int WINAPI -WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPTSTR szCmdLine, int sw) +WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR szCmdLine, int sw) { char **argv; int argc; char *cmdline; - char *bufp; - size_t nLen; /* Grab the command line */ - bufp = GetCommandLine(); - nLen = SDL_strlen(bufp) + 1; - cmdline = SDL_stack_alloc(char, nLen); + TCHAR *text = GetCommandLine(); +#if UNICODE + cmdline = SDL_iconv_string("UTF-8", "UCS-2-INTERNAL", (char *)(text), (SDL_wcslen(text)+1)*sizeof(WCHAR)); +#else + cmdline = SDL_strdup(text); +#endif if (cmdline == NULL) { return OutOfMemory(); } - SDL_strlcpy(cmdline, bufp, nLen); /* Parse it into argv and argc */ argc = ParseCommandLine(cmdline, NULL); @@ -174,6 +174,8 @@ WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPTSTR szCmdLine, int sw) /* Run the main program */ console_main(argc, argv); + SDL_free(cmdline); + /* Hush little compiler, don't you cry... */ return 0; }