From bbd957bfdbbbf792f4735213edf3d7767b26eb19 Mon Sep 17 00:00:00 2001 From: Nikolaj Olsson Date: Tue, 26 Apr 2016 18:26:36 +0200 Subject: [PATCH] Fixed crash in OCR when changing "Use color" - thx kurosu :) Fix #1727 --- src/Forms/VobSubOcr.cs | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/src/Forms/VobSubOcr.cs b/src/Forms/VobSubOcr.cs index dff40590f..7c54043a5 100644 --- a/src/Forms/VobSubOcr.cs +++ b/src/Forms/VobSubOcr.cs @@ -5462,7 +5462,7 @@ namespace Nikse.SubtitleEdit.Forms var bitmap = (Bitmap)e.Argument; if (bitmap != null) { - if (_tesseractAsyncIndex >= 0 && _tesseractAsyncIndex < _tesseractAsyncStrings.Length) + if (_tesseractAsyncIndex >= 0 && _tesseractAsyncStrings != null && _tesseractAsyncIndex < _tesseractAsyncStrings.Length) { if (string.IsNullOrEmpty(_tesseractAsyncStrings[_tesseractAsyncIndex])) _tesseractAsyncStrings[_tesseractAsyncIndex] = Tesseract3DoOcrViaExe(bitmap, _languageId, "-psm 6"); // 6 = Assume a single uniform block of text.); @@ -5476,7 +5476,7 @@ namespace Nikse.SubtitleEdit.Forms if (!e.Cancelled) { _tesseractAsyncIndex++; - if (_tesseractAsyncIndex >= 0 && _tesseractAsyncIndex < _tesseractAsyncStrings.Length) + if (_tesseractAsyncIndex >= 0 && _tesseractAsyncStrings != null && _tesseractAsyncIndex < _tesseractAsyncStrings.Length) _tesseractThread.RunWorkerAsync(GetSubtitleBitmap(_tesseractAsyncIndex)); } } @@ -7362,8 +7362,11 @@ namespace Nikse.SubtitleEdit.Forms if (_tesseractThread != null) { _tesseractThread.CancelAsync(); - for (int i = 0; i < _tesseractAsyncStrings.Length; i++) - _tesseractAsyncStrings[i] = string.Empty; + if (_tesseractAsyncStrings != null) + { + for (int i = 0; i < _tesseractAsyncStrings.Length; i++) + _tesseractAsyncStrings[i] = string.Empty; + } _tesseractAsyncIndex = 0; } } @@ -8537,6 +8540,14 @@ namespace Nikse.SubtitleEdit.Forms private void checkBoxTransportStreamGetColorAndSplit_CheckedChanged(object sender, EventArgs e) { + if (_ocrMethodIndex == _ocrMethodTesseract) + { + _icThreadsStop = true; + _abort = true; + _nocrThreadsStop = true; + ResetTesseractThread(); + } + if (checkBoxTransportStreamGetColorAndSplit.Checked) { SplitDvbForEachSubImage();