Skip to content

Commit

Permalink
Merge pull request #52842 from Ev1lbl0w/fix_win_open_errcode
Browse files Browse the repository at this point in the history
Fix shell_open not returning errors on Windows
  • Loading branch information
akien-mga authored Sep 21, 2021
2 parents 2785ad3 + c4787a8 commit a412011
Showing 1 changed file with 21 additions and 2 deletions.
23 changes: 21 additions & 2 deletions platform/windows/os_windows.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -557,8 +557,27 @@ String OS_Windows::get_stdin_string(bool p_block) {
}

Error OS_Windows::shell_open(String p_uri) {
ShellExecuteW(nullptr, nullptr, (LPCWSTR)(p_uri.utf16().get_data()), nullptr, nullptr, SW_SHOWNORMAL);
return OK;
INT_PTR ret = (INT_PTR)ShellExecuteW(nullptr, nullptr, (LPCWSTR)(p_uri.utf16().get_data()), nullptr, nullptr, SW_SHOWNORMAL);
if (ret > 32) {
return OK;
} else {
switch (ret) {
case ERROR_FILE_NOT_FOUND:
case SE_ERR_DLLNOTFOUND:
return ERR_FILE_NOT_FOUND;
case ERROR_PATH_NOT_FOUND:
return ERR_FILE_BAD_PATH;
case ERROR_BAD_FORMAT:
return ERR_FILE_CORRUPT;
case SE_ERR_ACCESSDENIED:
return ERR_UNAUTHORIZED;
case 0:
case SE_ERR_OOM:
return ERR_OUT_OF_MEMORY;
default:
return FAILED;
}
}
}

String OS_Windows::get_locale() const {
Expand Down

0 comments on commit a412011

Please sign in to comment.