Do not use pointer arithmetic in CXFA_Measurement.
Change-Id: I95602d0751671afb142760b7fb70158c2d2b74e9
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/52653
Commit-Queue: Tom Sepez <tsepez@chromium.org>
Reviewed-by: Lei Zhang <thestig@chromium.org>
diff --git a/xfa/fxfa/parser/cxfa_measurement.cpp b/xfa/fxfa/parser/cxfa_measurement.cpp
index bb1987a..9ac8a88 100644
--- a/xfa/fxfa/parser/cxfa_measurement.cpp
+++ b/xfa/fxfa/parser/cxfa_measurement.cpp
@@ -37,13 +37,14 @@
return;
}
+ if (wsMeasure[0] == L'=')
+ wsMeasure = wsMeasure.Right(wsMeasure.GetLength() - 1);
+
int32_t iUsedLen = 0;
- int32_t iOffset = (wsMeasure[0] == L'=') ? 1 : 0;
- float fValue = FXSYS_wcstof(wsMeasure.unterminated_c_str() + iOffset,
- wsMeasure.GetLength() - iOffset, &iUsedLen);
- XFA_Unit eUnit = GetUnitFromString(
- wsMeasure.Right(wsMeasure.GetLength() - (iOffset + iUsedLen)));
- Set(fValue, eUnit);
+ float fValue = FXSYS_wcstof(wsMeasure.unterminated_c_str(),
+ wsMeasure.GetLength(), &iUsedLen);
+ wsMeasure = wsMeasure.Right(wsMeasure.GetLength() - iUsedLen);
+ Set(fValue, GetUnitFromString(wsMeasure));
}
WideString CXFA_Measurement::ToString() const {