summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--fxbarcode/datamatrix/BC_C40Encoder.cpp10
-rw-r--r--fxbarcode/datamatrix/BC_EncoderContext.cpp12
-rw-r--r--fxbarcode/datamatrix/BC_EncoderContext.h10
3 files changed, 19 insertions, 13 deletions
diff --git a/fxbarcode/datamatrix/BC_C40Encoder.cpp b/fxbarcode/datamatrix/BC_C40Encoder.cpp
index e994774c4d..8edd9eccfe 100644
--- a/fxbarcode/datamatrix/BC_C40Encoder.cpp
+++ b/fxbarcode/datamatrix/BC_C40Encoder.cpp
@@ -189,8 +189,14 @@ int32_t CBC_C40Encoder::encodeChar(wchar_t c, CFX_WideString& sb, int32_t& e) {
int32_t CBC_C40Encoder::BacktrackOneCharacter(CBC_EncoderContext* context,
CFX_WideString* buffer,
int32_t lastCharSize) {
+ if (context->m_pos < 1)
+ return -1;
+
int32_t count = buffer->GetLength();
- buffer->Delete(count - lastCharSize, count);
+ if (count < lastCharSize)
+ return -1;
+
+ buffer->Delete(count - lastCharSize, lastCharSize);
context->m_pos--;
wchar_t c = context->getCurrentChar();
int32_t e = BCExceptionNO;
@@ -199,7 +205,7 @@ int32_t CBC_C40Encoder::BacktrackOneCharacter(CBC_EncoderContext* context,
if (e != BCExceptionNO)
return -1;
- assert(len > 0);
+ ASSERT(len > 0);
context->resetSymbolInfo();
return len;
}
diff --git a/fxbarcode/datamatrix/BC_EncoderContext.cpp b/fxbarcode/datamatrix/BC_EncoderContext.cpp
index 40855fcbd8..404c07d980 100644
--- a/fxbarcode/datamatrix/BC_EncoderContext.cpp
+++ b/fxbarcode/datamatrix/BC_EncoderContext.cpp
@@ -34,9 +34,9 @@ CBC_EncoderContext::CBC_EncoderContext(const CFX_WideString& msg,
CFX_ByteString dststr;
CBC_UtilCodingConvert::UnicodeToUTF8(msg, dststr);
CFX_WideString sb;
- int32_t c = dststr.GetLength();
- for (int32_t i = 0; i < c; i++) {
- wchar_t ch = (wchar_t)(dststr.GetAt(i) & 0xff);
+ FX_STRSIZE c = dststr.GetLength();
+ for (FX_STRSIZE i = 0; i < c; i++) {
+ wchar_t ch = static_cast<wchar_t>(dststr.GetAt(i) & 0xff);
if (ch == '?' && dststr.GetAt(i) != '?') {
e = BCExceptionCharactersOutsideISO88591Encoding;
}
@@ -73,7 +73,7 @@ void CBC_EncoderContext::writeCodewords(const CFX_WideString& codewords) {
void CBC_EncoderContext::writeCodeword(wchar_t codeword) {
m_codewords += codeword;
}
-int32_t CBC_EncoderContext::getCodewordCount() {
+FX_STRSIZE CBC_EncoderContext::getCodewordCount() {
return m_codewords.GetLength();
}
void CBC_EncoderContext::signalEncoderChange(int32_t encoding) {
@@ -85,7 +85,7 @@ void CBC_EncoderContext::resetEncoderSignal() {
bool CBC_EncoderContext::hasMoreCharacters() {
return m_pos < getTotalMessageCharCount();
}
-int32_t CBC_EncoderContext::getRemainingCharacters() {
+FX_STRSIZE CBC_EncoderContext::getRemainingCharacters() {
return getTotalMessageCharCount() - m_pos;
}
void CBC_EncoderContext::updateSymbolInfo(int32_t& e) {
@@ -103,6 +103,6 @@ void CBC_EncoderContext::resetSymbolInfo() {
m_allowRectangular = true;
}
-int32_t CBC_EncoderContext::getTotalMessageCharCount() {
+FX_STRSIZE CBC_EncoderContext::getTotalMessageCharCount() {
return m_msg.GetLength() - m_skipAtEnd;
}
diff --git a/fxbarcode/datamatrix/BC_EncoderContext.h b/fxbarcode/datamatrix/BC_EncoderContext.h
index 4931501c45..ef4c38ebab 100644
--- a/fxbarcode/datamatrix/BC_EncoderContext.h
+++ b/fxbarcode/datamatrix/BC_EncoderContext.h
@@ -25,26 +25,26 @@ class CBC_EncoderContext {
wchar_t getCurrent();
void writeCodewords(const CFX_WideString& codewords);
void writeCodeword(wchar_t codeword);
- int32_t getCodewordCount();
+ FX_STRSIZE getCodewordCount();
void signalEncoderChange(int32_t encoding);
void resetEncoderSignal();
bool hasMoreCharacters();
- int32_t getRemainingCharacters();
+ FX_STRSIZE getRemainingCharacters();
void updateSymbolInfo(int32_t& e);
void updateSymbolInfo(int32_t len, int32_t& e);
void resetSymbolInfo();
CFX_WideString m_msg;
CFX_WideString m_codewords;
- int32_t m_pos;
+ FX_STRSIZE m_pos;
int32_t m_newEncoding;
CFX_UnownedPtr<CBC_SymbolInfo> m_symbolInfo;
private:
- int32_t getTotalMessageCharCount();
+ FX_STRSIZE getTotalMessageCharCount();
bool m_allowRectangular; // Force square when false.
- int32_t m_skipAtEnd;
+ FX_STRSIZE m_skipAtEnd;
};
#endif // FXBARCODE_DATAMATRIX_BC_ENCODERCONTEXT_H_