mirror of
https://github.com/libsdl-org/SDL.git
synced 2025-10-05 01:16:26 +00:00
Fix Windows fie dialog args freeing
This commit is contained in:
@@ -128,21 +128,18 @@ void windows_ShowFileDialog(void *ptr)
|
|||||||
} else {
|
} else {
|
||||||
SDL_SetError("Couldn't load Comdlg32.dll");
|
SDL_SetError("Couldn't load Comdlg32.dll");
|
||||||
callback(userdata, NULL, -1);
|
callback(userdata, NULL, -1);
|
||||||
freeWinArgs(args);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!pGetAnyFileName) {
|
if (!pGetAnyFileName) {
|
||||||
SDL_SetError("Couldn't load GetOpenFileName/GetSaveFileName from library");
|
SDL_SetError("Couldn't load GetOpenFileName/GetSaveFileName from library");
|
||||||
callback(userdata, NULL, -1);
|
callback(userdata, NULL, -1);
|
||||||
freeWinArgs(args);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!pCommDlgExtendedError) {
|
if (!pCommDlgExtendedError) {
|
||||||
SDL_SetError("Couldn't load CommDlgExtendedError from library");
|
SDL_SetError("Couldn't load CommDlgExtendedError from library");
|
||||||
callback(userdata, NULL, -1);
|
callback(userdata, NULL, -1);
|
||||||
freeWinArgs(args);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -217,7 +214,6 @@ void windows_ShowFileDialog(void *ptr)
|
|||||||
if (!title_w) {
|
if (!title_w) {
|
||||||
SDL_free(filebuffer);
|
SDL_free(filebuffer);
|
||||||
callback(userdata, NULL, -1);
|
callback(userdata, NULL, -1);
|
||||||
freeWinArgs(args);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -276,7 +272,6 @@ void windows_ShowFileDialog(void *ptr)
|
|||||||
if (!chosen_files_list) {
|
if (!chosen_files_list) {
|
||||||
callback(userdata, NULL, -1);
|
callback(userdata, NULL, -1);
|
||||||
SDL_free(filebuffer);
|
SDL_free(filebuffer);
|
||||||
freeWinArgs(args);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -287,7 +282,6 @@ void windows_ShowFileDialog(void *ptr)
|
|||||||
SDL_free(chosen_files_list);
|
SDL_free(chosen_files_list);
|
||||||
callback(userdata, NULL, -1);
|
callback(userdata, NULL, -1);
|
||||||
SDL_free(filebuffer);
|
SDL_free(filebuffer);
|
||||||
freeWinArgs(args);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -309,7 +303,6 @@ void windows_ShowFileDialog(void *ptr)
|
|||||||
SDL_free(chosen_files_list);
|
SDL_free(chosen_files_list);
|
||||||
callback(userdata, NULL, -1);
|
callback(userdata, NULL, -1);
|
||||||
SDL_free(filebuffer);
|
SDL_free(filebuffer);
|
||||||
freeWinArgs(args);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -328,7 +321,6 @@ void windows_ShowFileDialog(void *ptr)
|
|||||||
SDL_free(chosen_files_list);
|
SDL_free(chosen_files_list);
|
||||||
callback(userdata, NULL, -1);
|
callback(userdata, NULL, -1);
|
||||||
SDL_free(filebuffer);
|
SDL_free(filebuffer);
|
||||||
freeWinArgs(args);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -344,7 +336,6 @@ void windows_ShowFileDialog(void *ptr)
|
|||||||
SDL_free(chosen_files_list);
|
SDL_free(chosen_files_list);
|
||||||
callback(userdata, NULL, -1);
|
callback(userdata, NULL, -1);
|
||||||
SDL_free(filebuffer);
|
SDL_free(filebuffer);
|
||||||
freeWinArgs(args);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -358,7 +349,6 @@ void windows_ShowFileDialog(void *ptr)
|
|||||||
SDL_free(chosen_files_list);
|
SDL_free(chosen_files_list);
|
||||||
callback(userdata, NULL, -1);
|
callback(userdata, NULL, -1);
|
||||||
SDL_free(filebuffer);
|
SDL_free(filebuffer);
|
||||||
freeWinArgs(args);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -370,7 +360,6 @@ void windows_ShowFileDialog(void *ptr)
|
|||||||
SDL_free(chosen_files_list);
|
SDL_free(chosen_files_list);
|
||||||
callback(userdata, NULL, -1);
|
callback(userdata, NULL, -1);
|
||||||
SDL_free(filebuffer);
|
SDL_free(filebuffer);
|
||||||
freeWinArgs(args);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -400,13 +389,12 @@ void windows_ShowFileDialog(void *ptr)
|
|||||||
}
|
}
|
||||||
|
|
||||||
SDL_free(filebuffer);
|
SDL_free(filebuffer);
|
||||||
freeWinArgs(args);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int windows_file_dialog_thread(void *ptr)
|
int windows_file_dialog_thread(void *ptr)
|
||||||
{
|
{
|
||||||
windows_ShowFileDialog(ptr);
|
windows_ShowFileDialog(ptr);
|
||||||
SDL_free(ptr);
|
freeWinArgs(ptr);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -461,7 +449,6 @@ void windows_ShowFolderDialog(void *ptr)
|
|||||||
|
|
||||||
if (!title_w) {
|
if (!title_w) {
|
||||||
callback(userdata, NULL, -1);
|
callback(userdata, NULL, -1);
|
||||||
freeWinFArgs(args);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -494,14 +481,12 @@ void windows_ShowFolderDialog(void *ptr)
|
|||||||
const char *files[1] = { NULL };
|
const char *files[1] = { NULL };
|
||||||
callback(userdata, (const char * const*) files, -1);
|
callback(userdata, (const char * const*) files, -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
freeWinFArgs(args);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int windows_folder_dialog_thread(void *ptr)
|
int windows_folder_dialog_thread(void *ptr)
|
||||||
{
|
{
|
||||||
windows_ShowFolderDialog(ptr);
|
windows_ShowFolderDialog(ptr);
|
||||||
SDL_free(ptr);
|
freeWinFArgs((winFArgs *)ptr);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -584,7 +569,8 @@ static void ShowFileDialog(SDL_DialogFileCallback callback, void *userdata, SDL_
|
|||||||
|
|
||||||
if (thread == NULL) {
|
if (thread == NULL) {
|
||||||
callback(userdata, NULL, -1);
|
callback(userdata, NULL, -1);
|
||||||
SDL_free(args);
|
// The thread won't have run, therefore the data won't have been freed
|
||||||
|
freeWinArgs(args);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -620,7 +606,8 @@ void ShowFolderDialog(SDL_DialogFileCallback callback, void *userdata, SDL_Windo
|
|||||||
|
|
||||||
if (thread == NULL) {
|
if (thread == NULL) {
|
||||||
callback(userdata, NULL, -1);
|
callback(userdata, NULL, -1);
|
||||||
SDL_free(args);
|
// The thread won't have run, therefore the data won't have been freed
|
||||||
|
freeWinFArgs(args);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user