[FIX] Handle NULL bitmap gracefully in OCR instead of crashing (#1010)#1878
Merged
[FIX] Handle NULL bitmap gracefully in OCR instead of crashing (#1010)#1878
Conversation
When processing DVB subtitles from live streams or corrupted files, the bitmap clipping operation can fail, resulting in a NULL pix object. Previously, this would cause a fatal crash with "Failed to perform OCR - Failed to get text" because the code continued to call TessBaseAPIGetUTF8Text even when no image was set. Changes: - Handle cpix_gs == NULL by logging a message and returning NULL (skip this bitmap) instead of continuing and crashing - Change the fatal error when TessBaseAPIGetUTF8Text returns NULL to a non-fatal skip, since this can happen with empty/invalid bitmaps - Both cases now properly clean up allocated resources before returning This allows CCExtractor to gracefully skip problematic subtitle frames instead of crashing, which is especially important for live streams where packet loss or discontinuities can occur. Fixes #1010 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Collaborator
CCExtractor CI platform finished running the test files on windows. Below is a summary of the test results, when compared to test for commit e3b0def...:
Your PR breaks these cases:
It seems that not all tests were passed completely. This is an indication that the output of some files is not as expected (but might be according to you). Check the result page for more info. |
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.
Summary
Root Cause
The code path was:
pixClipRectanglefails → "box outside rectangle" errorpixConvertRGBToGrayreceives NULL → "pixs not defined" errorcpix_gsis NULL, but code continues to line 415TessBaseAPIGetUTF8Textreturns NULL (no image was set)fatal()is called → crashFix
cpix_gs == NULLby cleaning up and returning NULL (skip bitmap)TessBaseAPIGetUTF8TextNULL case from fatal error to graceful skipTesting
This fix allows CCExtractor to continue processing even when individual subtitle frames are corrupted, which is critical for live streams where packet loss can occur.
Fixes #1010
🤖 Generated with Claude Code