Fix crash if app bundle executeable couldn't be found
Fix a crash on Mac OS X if a programm can't be found as an application bundle. CFRelease MUST NOT be called on a NULL value. See https://developer.apple.com/library/mac/documentation/CoreFOundation/Reference/CFTypeRef/Reference/reference.html#//apple_ref/doc/c_ref/CFRelease
This commit is contained in:
parent
f3fe73da54
commit
0d2f5c8d6a
|
@ -175,6 +175,8 @@ std::string cmFindProgramCommand::GetBundleExecutable(std::string bundlePath)
|
||||||
|
|
||||||
// And finally to a c++ string
|
// And finally to a c++ string
|
||||||
executable = bundlePath + "/Contents/MacOS/" + std::string(buffer);
|
executable = bundlePath + "/Contents/MacOS/" + std::string(buffer);
|
||||||
|
// Only release CFURLRef if it's not null
|
||||||
|
CFRelease( executableURL );
|
||||||
}
|
}
|
||||||
|
|
||||||
// Any CF objects returned from functions with "create" or
|
// Any CF objects returned from functions with "create" or
|
||||||
|
@ -182,7 +184,6 @@ std::string cmFindProgramCommand::GetBundleExecutable(std::string bundlePath)
|
||||||
CFRelease( bundlePathCFS );
|
CFRelease( bundlePathCFS );
|
||||||
CFRelease( bundleURL );
|
CFRelease( bundleURL );
|
||||||
CFRelease( appBundle );
|
CFRelease( appBundle );
|
||||||
CFRelease( executableURL );
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return executable;
|
return executable;
|
||||||
|
|
Loading…
Reference in New Issue