]> git.saurik.com Git - wxWidgets.git/commitdiff
applying patch 1188918
authorStefan Csomor <csomor@advancedconcepts.ch>
Tue, 10 May 2005 05:44:10 +0000 (05:44 +0000)
committerStefan Csomor <csomor@advancedconcepts.ch>
Tue, 10 May 2005 05:44:10 +0000 (05:44 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@34005 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/mac/corefoundation/hid.cpp
src/unix/utilsunx.cpp

index b19859b6572396f690269f3a918943492210c466..d5578c28f70d2db86defae8fe5e463b98ac08f3b 100644 (file)
@@ -588,6 +588,9 @@ long wxMacExecute(wxChar **argv,
                int flags,
                wxProcess *process)
 {
+       const long errorCode = ((flags & wxEXEC_SYNC) ? -1 : 0);
+       const long successCode = ((flags & wxEXEC_SYNC) ? 0 : -1); // fake PID
+
     CFIndex cfiCount = 0;
     //get count
     for(wxChar** argvcopy = argv; *argvcopy != NULL ; ++argvcopy)
@@ -598,7 +601,7 @@ long wxMacExecute(wxChar **argv,
     if(cfiCount == 0) //no file to launch?
     {
         wxLogDebug(wxT("wxMacExecute No file to launch!"));
-        return -1;
+        return errorCode ;
     }
     
     CFURLRef cfurlApp = CFURLCreateWithString(
@@ -612,7 +615,7 @@ long wxMacExecute(wxChar **argv,
     {
         wxLogDebug(wxT("wxMacExecute Bad bundle"));
         CFRelease(cfurlApp);
-        return -1;
+        return errorCode ;
     }
     
     
@@ -623,14 +626,15 @@ long wxMacExecute(wxChar **argv,
     if(dwBundleType != 'APPL')
     {
         CFRelease(cfurlApp);
-        return -1;
+        return errorCode ;
     }
     
     //
     // We have a good bundle - so let's launch it!
     //
     
-    CFMutableArrayRef cfaFiles = CFArrayCreateMutable(kCFAllocatorDefault, cfiCount - 1, NULL);
+    CFMutableArrayRef cfaFiles =
+        CFArrayCreateMutable(kCFAllocatorDefault, cfiCount - 1, &kCFTypeArrayCallBacks);
             
     wxASSERT(cfaFiles);
     
@@ -656,6 +660,7 @@ long wxMacExecute(wxChar **argv,
                 cfaFiles,
                 cfurlCurrentFile
                             );
+            CFRelease(cfurlCurrentFile); // array has retained it
         }
     }
     
@@ -677,9 +682,9 @@ long wxMacExecute(wxChar **argv,
     if(status != noErr)
     {
         wxLogDebug(wxString::Format(wxT("wxMacExecute ERROR: %d")), (int)status);
-        return -1;
+        return errorCode ;
     }
-    return 0; //success
+    return successCode; //success
 }
 
 #endif //__DARWIN__
index 33caa09fb5690784f7c7d93fba68fc1cd7e3d9c9..4d670f4ea0ef2ddfac9726f33f3c006b6279eb2e 100644 (file)
@@ -316,10 +316,10 @@ long wxExecute( const wxString& command, int flags, wxProcess *process )
     long lRc;
 #if defined(__DARWIN__)
     // wxMacExecute only executes app bundles.
-    // It returns -1 if the target is not an app bundle, thus falling through
-    // to the regular wxExecute for non app bundles.
+    // It returns an error code if the target is not an app bundle, thus falling
+    // through to the regular wxExecute for non app bundles.
     lRc = wxMacExecute(argv, flags, process);
-    if( lRc != -1)
+    if( lRc != ((flags & wxEXEC_SYNC) ? -1 : 0))
         return lRc;
 #endif