]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/utilscmn.cpp
add safe wxStrlcpy() function and replaced all wxStrncpy() calls by it
[wxWidgets.git] / src / common / utilscmn.cpp
index a498ce07e6e33ec206442ae4d917d09c5a7cf77c..dc2a79628fbfe1a5e04adc740de8a19a93f47597 100644 (file)
@@ -436,8 +436,7 @@ bool wxGetEmailAddress(wxChar *address, int maxSize)
     if ( !email )
         return false;
 
     if ( !email )
         return false;
 
-    wxStrncpy(address, email, maxSize - 1);
-    address[maxSize - 1] = wxT('\0');
+    wxStrlcpy(address, email, maxSize);
 
     return true;
 }
 
     return true;
 }
@@ -960,16 +959,17 @@ bool wxLaunchDefaultApplication(const wxString& document, int flags)
             return true;
     }
 #elif defined(__WXMSW__)
             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<SHELLEXECUTEINFO> 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
 
         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
 
     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;
         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.
 #elif defined(__WXCOCOA__)
     // NOTE: We need to call the real implementation from src/cocoa/utils.mm
     // because the code must use Objective-C features.