Use correct size in System::executable() on macOS#51
Merged
Conversation
The Process::exit_code() call didn't differentiate between the process exiting cleanly and returning an exit code and the process being terminated by a signal or exception, e.g. segfaulting. Fixed by differentiating between those two cases. Also refactors exit code retrieval to Process::wait() on Windows so that the killed by signal and exception error is generated from Process::wait() on all platforms.
The call to _NSGetExecutablePath() only updates it size parameter if the size of the buffer passed in is too small. If the buffer is large enough it is simply filled and the size is left as is. This always returns a 4096 byte path on macOS. Fixed by leaving out the size parameter when constructing the returned string, let search for the null terminator determine the length.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The call to
_NSGetExecutablePath()only updates itssizeparameter if the size of the buffer passed in is too small. If the buffer is large enough it is simply filled and the size is left as is. This ends up returning a 4096 byte path on macOS even when the actual path is much shorter.Fixed by leaving out the size parameter when constructing the returned string, let search for the null terminator determine the length.