fix(ios): prevent crash when VTCreateCGImageFromCVPixelBuffer fails (#1545) #1546
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.
Line 147-165: VTCreateCGImageFromCVPixelBuffer now checks status before using
✅ Line 185-188: jpegData() safely handled (can return nil)
✅ Line 218-226: Reset flag in catch block + proper error propagation
✅ Line 277-296: Array bounds validated before access
✅ Line 44-45 & 428-437 & 756-770: Observer tracking prevents double-add/remove crashes
Description
Fixes EXC_BREAKPOINT crash in iOS when VTCreateCGImageFromCVPixelBuffer fails.
Problem
The current code force-unwraps the CGImage after calling VTCreateCGImageFromCVPixelBuffer without checking if the operation succeeded. When the camera is interrupted (phone call, app switching, etc.), this causes an EXC_BREAKPOINT crash.
Solution
Testing
Tested on iOS 17.x with:
Related Issues
Fixes #1545 [iOS] EXC_BREAKPOINT crash in captureOutput when VTCreateCGImageFromCVPixelBuffer fails
Checklist