Index: xfa/src/fxbarcode/oned/BC_OneDReader.cpp |
diff --git a/xfa/src/fxbarcode/oned/BC_OneDReader.cpp b/xfa/src/fxbarcode/oned/BC_OneDReader.cpp |
index 0b699c96247c0c6db1c72413da4148b9e4105f7d..7cb8ba51fafcdb1dc6ddda2bae329b3d331ec2d5 100644 |
--- a/xfa/src/fxbarcode/oned/BC_OneDReader.cpp |
+++ b/xfa/src/fxbarcode/oned/BC_OneDReader.cpp |
@@ -21,6 +21,7 @@ |
*/ |
#include <algorithm> |
+#include <memory> |
#include "xfa/src/fxbarcode/BC_BinaryBitmap.h" |
#include "xfa/src/fxbarcode/BC_Reader.h" |
@@ -49,7 +50,6 @@ CFX_ByteString CBC_OneDReader::DeDecode(CBC_BinaryBitmap* image, |
int32_t hints, |
int32_t& e) { |
int32_t height = image->GetHeight(); |
- CBC_CommonBitArray* row = NULL; |
int32_t middle = height >> 1; |
FX_BOOL tryHarder = FALSE; |
int32_t rowStep = std::max(1, height >> (tryHarder ? 8 : 5)); |
@@ -68,34 +68,23 @@ CFX_ByteString CBC_OneDReader::DeDecode(CBC_BinaryBitmap* image, |
if (rowNumber < 0 || rowNumber >= height) { |
break; |
} |
- row = image->GetBlackRow(rowNumber, NULL, e); |
+ std::unique_ptr<CBC_CommonBitArray> row( |
+ image->GetBlackRow(rowNumber, nullptr, e)); |
if (e != BCExceptionNO) { |
e = BCExceptionNO; |
- if (row != NULL) { |
- delete row; |
- row = NULL; |
- } |
continue; |
} |
for (int32_t attempt = 0; attempt < 2; attempt++) { |
if (attempt == 1) { |
row->Reverse(); |
} |
- CFX_ByteString result = DecodeRow(rowNumber, row, hints, e); |
+ CFX_ByteString result = DecodeRow(rowNumber, row.get(), hints, e); |
if (e != BCExceptionNO) { |
e = BCExceptionNO; |
continue; |
} |
- if (row != NULL) { |
- delete row; |
- row = NULL; |
- } |
return result; |
} |
- if (row != NULL) { |
- delete row; |
- row = NULL; |
- } |
} |
e = BCExceptionNotFound; |
return ""; |