X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/53b849eadf9136990f207a8ba83d43c08ee90841..e408bf5257ead0754de5ef37a39867c7536dbe03:/src/common/utilscmn.cpp?ds=sidebyside diff --git a/src/common/utilscmn.cpp b/src/common/utilscmn.cpp index a498ce07e6..dc2a79628f 100644 --- a/src/common/utilscmn.cpp +++ b/src/common/utilscmn.cpp @@ -436,8 +436,7 @@ bool wxGetEmailAddress(wxChar *address, int maxSize) if ( !email ) return false; - wxStrncpy(address, email, maxSize - 1); - address[maxSize - 1] = wxT('\0'); + wxStrlcpy(address, email, maxSize); return true; } @@ -960,16 +959,17 @@ bool wxLaunchDefaultApplication(const wxString& document, int flags) return true; } #elif defined(__WXMSW__) - const INT_PTR result = (INT_PTR)::ShellExecute - ( - NULL, // parent window - _T("open"), - document.wx_str(), - NULL, // parameters - NULL, // working directory - SW_SHOWDEFAULT - ); - if ( result > 32 ) + WinStruct sei; + sei.lpFile = document.wx_str(); + sei.lpVerb = _T("open"); + sei.nShow = SW_SHOWDEFAULT; + + // avoid Windows message box in case of error for consistency with + // wxLaunchDefaultBrowser() even if don't show the error ourselves in this + // function + sei.fMask = SEE_MASK_FLAG_NO_UI; + + if ( ::ShellExecuteEx(&sei) ) return true; #endif @@ -1077,21 +1077,8 @@ static bool DoLaunchDefaultBrowser(const wxString& urlOrig, int flags) sei.nShow = SW_SHOWNORMAL; sei.fMask = SEE_MASK_FLAG_NO_UI; // we give error message ourselves - ::ShellExecuteEx(&sei); - - const INT_PTR nResult = (INT_PTR)sei.hInstApp; - - // Firefox returns file not found for some reason, so make an exception - // for it - if ( nResult > 32 || nResult == SE_ERR_FNF ) - { -#ifdef __WXDEBUG__ - // Log something if SE_ERR_FNF happens - if ( nResult == SE_ERR_FNF ) - wxLogDebug(wxT("SE_ERR_FNF from ShellExecute -- maybe FireFox?")); -#endif // __WXDEBUG__ + if ( ::ShellExecuteEx(&sei) ) return true; - } #elif defined(__WXCOCOA__) // NOTE: We need to call the real implementation from src/cocoa/utils.mm // because the code must use Objective-C features.