From 33805cc811c722a0c5cd439cff419de252cd39c9 Mon Sep 17 00:00:00 2001 From: Ryan Harrison Date: Thu, 27 Jul 2017 16:28:44 -0400 Subject: Remove single param Mid() method from string classes This support is being removed from CFX_ByteString, CFX_ByteStringC, CFX_WideString, and CFX_WideStringC. This standardizes all of these classes to only have one Mid method that takes in 2 params, offset and count. Count now must be positive. The old behaviour of calculating the length for the user if -1 is passed in for the count has been removed. This work is in preperation for converting these classes to not accept negative lengths anywhere and thus make the underlying size type unsigned. BUG=pdfium:828 Change-Id: I5f15e7b7b00b264231817f143e2da88ee6f69e7b Reviewed-on: https://pdfium-review.googlesource.com/9430 Reviewed-by: (OOO Jul 28 - Aug 8) dsinclair Reviewed-by: Tom Sepez Commit-Queue: Ryan Harrison --- xfa/fxfa/fm2js/cxfa_fm2jscontext.cpp | 12 +++++++++--- xfa/fxfa/fm2js/cxfa_fmexpression.cpp | 30 ++++++++++++++++++++---------- xfa/fxfa/fm2js/cxfa_fmsimpleexpression.cpp | 3 ++- xfa/fxfa/parser/cxfa_layoutpagemgr.cpp | 2 +- xfa/fxfa/parser/cxfa_measurement.cpp | 3 ++- xfa/fxfa/parser/cxfa_node.cpp | 15 ++++++++------- xfa/fxfa/parser/cxfa_widgetdata.cpp | 5 ++++- 7 files changed, 46 insertions(+), 24 deletions(-) (limited to 'xfa/fxfa') diff --git a/xfa/fxfa/fm2js/cxfa_fm2jscontext.cpp b/xfa/fxfa/fm2js/cxfa_fm2jscontext.cpp index 445d729668..1910e60e3e 100644 --- a/xfa/fxfa/fm2js/cxfa_fm2jscontext.cpp +++ b/xfa/fxfa/fm2js/cxfa_fm2jscontext.cpp @@ -1138,7 +1138,8 @@ void CXFA_FM2JSContext::IsoTime2Num(CFXJSE_Value* pThis, CXFA_Document* pDoc = pContext->GetDocument(); CXFA_LocaleMgr* pMgr = pDoc->GetLocalMgr(); CFX_ByteString szArgString = ValueToUTF8String(argOne.get()); - szArgString = szArgString.Mid(szArgString.Find('T', 0) + 1); + FX_STRSIZE pos = szArgString.Find('T', 0); + szArgString = szArgString.Mid(pos + 1, szArgString.GetLength() - (pos + 1)); if (szArgString.IsEmpty()) { args.GetReturnValue()->SetInteger(0); return; @@ -3692,7 +3693,9 @@ void CXFA_FM2JSContext::Format(CFXJSE_Value* pThis, wsDatePattern += wsPattern.Left(iTChar) + L"} "; CFX_WideString wsTimePattern(L"time{"); - wsTimePattern += wsPattern.Mid(iTChar + 1) + L"}"; + wsTimePattern += + wsPattern.Mid(iTChar + 1, wsPattern.GetLength() - (iTChar + 1)) + + L"}"; wsPattern = wsDatePattern + wsTimePattern; } break; case XFA_VT_DATE: { @@ -3877,7 +3880,10 @@ void CXFA_FM2JSContext::Parse(CFXJSE_Value* pThis, case XFA_VT_DATETIME: { FX_STRSIZE iTChar = wsPattern.Find(L'T'); CFX_WideString wsDatePattern(L"date{" + wsPattern.Left(iTChar) + L"} "); - CFX_WideString wsTimePattern(L"time{" + wsPattern.Mid(iTChar + 1) + L"}"); + CFX_WideString wsTimePattern( + L"time{" + + wsPattern.Mid(iTChar + 1, wsPattern.GetLength() - (iTChar + 1)) + + L"}"); wsPattern = wsDatePattern + wsTimePattern; CXFA_LocaleValue localeValue(patternType, wsValue, wsPattern, pLocale, pMgr); diff --git a/xfa/fxfa/fm2js/cxfa_fmexpression.cpp b/xfa/fxfa/fm2js/cxfa_fmexpression.cpp index 7e6e0954aa..b201863b25 100644 --- a/xfa/fxfa/fm2js/cxfa_fmexpression.cpp +++ b/xfa/fxfa/fm2js/cxfa_fmexpression.cpp @@ -61,7 +61,8 @@ bool CXFA_FMFunctionDefinition::ToJavaScript(CFX_WideTextBuf& javascript) { } javascript << L"function "; if (m_wsName.GetAt(0) == L'!') { - CFX_WideString tempName = EXCLAMATION_IN_IDENTIFIER + m_wsName.Mid(1); + CFX_WideString tempName = + EXCLAMATION_IN_IDENTIFIER + m_wsName.Mid(1, m_wsName.GetLength() - 1); javascript << tempName; } else { javascript << m_wsName; @@ -73,7 +74,8 @@ bool CXFA_FMFunctionDefinition::ToJavaScript(CFX_WideTextBuf& javascript) { javascript << L", "; if (identifier.GetAt(0) == L'!') { CFX_WideString tempIdentifier = - EXCLAMATION_IN_IDENTIFIER + identifier.Mid(1); + EXCLAMATION_IN_IDENTIFIER + + identifier.Mid(1, identifier.GetLength() - 1); javascript << tempIdentifier; } else { javascript << identifier; @@ -127,7 +129,8 @@ bool CXFA_FMVarExpression::ToJavaScript(CFX_WideTextBuf& javascript) { javascript << L"var "; CFX_WideString tempName(m_wsName); if (m_wsName.GetAt(0) == L'!') { - tempName = EXCLAMATION_IN_IDENTIFIER + m_wsName.Mid(1); + tempName = + EXCLAMATION_IN_IDENTIFIER + m_wsName.Mid(1, m_wsName.GetLength() - 1); } javascript << tempName; javascript << L" = "; @@ -150,7 +153,8 @@ bool CXFA_FMVarExpression::ToImpliedReturnJS(CFX_WideTextBuf& javascript) { javascript << L"var "; CFX_WideString tempName(m_wsName); if (m_wsName.GetAt(0) == L'!') { - tempName = EXCLAMATION_IN_IDENTIFIER + m_wsName.Mid(1); + tempName = + EXCLAMATION_IN_IDENTIFIER + m_wsName.Mid(1, m_wsName.GetLength() - 1); } javascript << tempName; javascript << L" = "; @@ -456,7 +460,8 @@ bool CXFA_FMForExpression::ToJavaScript(CFX_WideTextBuf& javascript) { javascript << L"{\nvar "; CFX_WideString tempVariant; if (m_wsVariant.GetAt(0) == L'!') { - tempVariant = EXCLAMATION_IN_IDENTIFIER + m_wsVariant.Mid(1); + tempVariant = EXCLAMATION_IN_IDENTIFIER + + m_wsVariant.Mid(1, m_wsVariant.GetLength() - 1); javascript << tempVariant; } else { tempVariant = m_wsVariant; @@ -510,7 +515,8 @@ bool CXFA_FMForExpression::ToImpliedReturnJS(CFX_WideTextBuf& javascript) { javascript << L"{\nvar "; CFX_WideString tempVariant; if (m_wsVariant.GetAt(0) == L'!') { - tempVariant = EXCLAMATION_IN_IDENTIFIER + m_wsVariant.Mid(1); + tempVariant = EXCLAMATION_IN_IDENTIFIER + + m_wsVariant.Mid(1, m_wsVariant.GetLength() - 1); javascript << tempVariant; } else { tempVariant = m_wsVariant; @@ -576,7 +582,8 @@ bool CXFA_FMForeachExpression::ToJavaScript(CFX_WideTextBuf& javascript) { javascript << L"var "; if (m_wsIdentifier.GetAt(0) == L'!') { CFX_WideString tempIdentifier = - EXCLAMATION_IN_IDENTIFIER + m_wsIdentifier.Mid(1); + EXCLAMATION_IN_IDENTIFIER + + m_wsIdentifier.Mid(1, m_wsIdentifier.GetLength() - 1); javascript << tempIdentifier; } else { javascript << m_wsIdentifier; @@ -607,7 +614,8 @@ bool CXFA_FMForeachExpression::ToJavaScript(CFX_WideTextBuf& javascript) { javascript << L".length)\n{\n"; if (m_wsIdentifier.GetAt(0) == L'!') { CFX_WideString tempIdentifier = - EXCLAMATION_IN_IDENTIFIER + m_wsIdentifier.Mid(1); + EXCLAMATION_IN_IDENTIFIER + + m_wsIdentifier.Mid(1, m_wsIdentifier.GetLength() - 1); javascript << tempIdentifier; } else { javascript << m_wsIdentifier; @@ -631,7 +639,8 @@ bool CXFA_FMForeachExpression::ToImpliedReturnJS(CFX_WideTextBuf& javascript) { javascript << L"var "; if (m_wsIdentifier.GetAt(0) == L'!') { CFX_WideString tempIdentifier = - EXCLAMATION_IN_IDENTIFIER + m_wsIdentifier.Mid(1); + EXCLAMATION_IN_IDENTIFIER + + m_wsIdentifier.Mid(1, m_wsIdentifier.GetLength() - 1); javascript << tempIdentifier; } else { javascript << m_wsIdentifier; @@ -661,7 +670,8 @@ bool CXFA_FMForeachExpression::ToImpliedReturnJS(CFX_WideTextBuf& javascript) { javascript << L".length)\n{\n"; if (m_wsIdentifier.GetAt(0) == L'!') { CFX_WideString tempIdentifier = - EXCLAMATION_IN_IDENTIFIER + m_wsIdentifier.Mid(1); + EXCLAMATION_IN_IDENTIFIER + + m_wsIdentifier.Mid(1, m_wsIdentifier.GetLength() - 1); javascript << tempIdentifier; } else { javascript << m_wsIdentifier; diff --git a/xfa/fxfa/fm2js/cxfa_fmsimpleexpression.cpp b/xfa/fxfa/fm2js/cxfa_fmsimpleexpression.cpp index 955b06fe93..1a3a125032 100644 --- a/xfa/fxfa/fm2js/cxfa_fmsimpleexpression.cpp +++ b/xfa/fxfa/fm2js/cxfa_fmsimpleexpression.cpp @@ -180,7 +180,8 @@ bool CXFA_FMIdentifierExpression::ToJavaScript(CFX_WideTextBuf& javascript) { } else if (tempStr == L"$template") { tempStr = L"xfa.template"; } else if (tempStr[0] == L'!') { - tempStr = EXCLAMATION_IN_IDENTIFIER + tempStr.Mid(1); + tempStr = + EXCLAMATION_IN_IDENTIFIER + tempStr.Mid(1, tempStr.GetLength() - 1); } javascript << tempStr; return true; diff --git a/xfa/fxfa/parser/cxfa_layoutpagemgr.cpp b/xfa/fxfa/parser/cxfa_layoutpagemgr.cpp index a3f4ce9519..e3565835c3 100644 --- a/xfa/fxfa/parser/cxfa_layoutpagemgr.cpp +++ b/xfa/fxfa/parser/cxfa_layoutpagemgr.cpp @@ -162,7 +162,7 @@ CXFA_Node* ResolveBreakTarget(CXFA_Node* pPageSetRoot, if (wsExpr.GetAt(0) == '#') { CXFA_Node* pNode = pDocument->GetNodeByID( ToNode(pDocument->GetXFAObject(XFA_HASHCODE_Template)), - wsExpr.Mid(1).AsStringC()); + wsExpr.Mid(1, wsExpr.GetLength() - 1).AsStringC()); if (pNode) return pNode; } else if (bNewExprStyle) { diff --git a/xfa/fxfa/parser/cxfa_measurement.cpp b/xfa/fxfa/parser/cxfa_measurement.cpp index f161e49e49..50076583bb 100644 --- a/xfa/fxfa/parser/cxfa_measurement.cpp +++ b/xfa/fxfa/parser/cxfa_measurement.cpp @@ -40,7 +40,8 @@ void CXFA_Measurement::SetString(const CFX_WideStringC& wsMeasure) { int32_t iOffset = (wsMeasure.GetAt(0) == L'=') ? 1 : 0; float fValue = FXSYS_wcstof(wsMeasure.unterminated_c_str() + iOffset, wsMeasure.GetLength() - iOffset, &iUsedLen); - XFA_UNIT eUnit = GetUnitFromString(wsMeasure.Mid(iOffset + iUsedLen)); + XFA_UNIT eUnit = GetUnitFromString(wsMeasure.Mid( + iOffset + iUsedLen, wsMeasure.GetLength() - (iOffset + iUsedLen))); Set(fValue, eUnit); } diff --git a/xfa/fxfa/parser/cxfa_node.cpp b/xfa/fxfa/parser/cxfa_node.cpp index eac7ac04b0..1265988902 100644 --- a/xfa/fxfa/parser/cxfa_node.cpp +++ b/xfa/fxfa/parser/cxfa_node.cpp @@ -77,7 +77,7 @@ int32_t GetCount(CXFA_Node* pInstMgrNode) { CFX_WideStringC wsName = pNode->GetCData(XFA_ATTRIBUTE_Name); CFX_WideStringC wsInstName = pInstMgrNode->GetCData(XFA_ATTRIBUTE_Name); if (wsInstName.GetLength() < 1 || wsInstName.GetAt(0) != '_' || - wsInstName.Mid(1) != wsName) { + wsInstName.Mid(1, wsInstName.GetLength() - 1) != wsName) { return iCount; } dwNameHash = pNode->GetNameHash(); @@ -198,7 +198,7 @@ CXFA_Node* GetItem(CXFA_Node* pInstMgrNode, int32_t iIndex) { CFX_WideStringC wsName = pNode->GetCData(XFA_ATTRIBUTE_Name); CFX_WideStringC wsInstName = pInstMgrNode->GetCData(XFA_ATTRIBUTE_Name); if (wsInstName.GetLength() < 1 || wsInstName.GetAt(0) != '_' || - wsInstName.Mid(1) != wsName) { + wsInstName.Mid(1, wsInstName.GetLength() - 1) != wsName) { return nullptr; } dwNameHash = pNode->GetNameHash(); @@ -2737,7 +2737,7 @@ void CXFA_Node::Script_Subform_InstanceManager(CFXJSE_Value* pValue, if (pNode->GetElementType() == XFA_Element::InstanceManager) { CFX_WideStringC wsInstMgrName = pNode->GetCData(XFA_ATTRIBUTE_Name); if (wsInstMgrName.GetLength() >= 1 && wsInstMgrName.GetAt(0) == '_' && - wsInstMgrName.Mid(1) == wsName) { + wsInstMgrName.Mid(1, wsInstMgrName.GetLength() - 1) == wsName) { pInstanceMgr = pNode; } break; @@ -3162,9 +3162,10 @@ int32_t CXFA_Node::InstanceManager_SetInstances(int32_t iDesired) { } if (iDesired < iCount) { CFX_WideStringC wsInstManagerName = GetCData(XFA_ATTRIBUTE_Name); - CFX_WideString wsInstanceName = - CFX_WideString(wsInstManagerName.IsEmpty() ? wsInstManagerName - : wsInstManagerName.Mid(1)); + CFX_WideString wsInstanceName = CFX_WideString( + wsInstManagerName.IsEmpty() + ? wsInstManagerName + : wsInstManagerName.Mid(1, wsInstManagerName.GetLength() - 1)); uint32_t dInstanceNameHash = FX_HashCode_GetW(wsInstanceName.AsStringC(), false); CXFA_Node* pPrevSibling = @@ -4664,7 +4665,7 @@ CXFA_Node* CXFA_Node::GetInstanceMgrOfSubform() { CFX_WideStringC wsName = GetCData(XFA_ATTRIBUTE_Name); CFX_WideStringC wsInstName = pNode->GetCData(XFA_ATTRIBUTE_Name); if (wsInstName.GetLength() > 0 && wsInstName.GetAt(0) == '_' && - wsInstName.Mid(1) == wsName) { + wsInstName.Mid(1, wsInstName.GetLength() - 1) == wsName) { pInstanceMgr = pNode; } break; diff --git a/xfa/fxfa/parser/cxfa_widgetdata.cpp b/xfa/fxfa/parser/cxfa_widgetdata.cpp index cbe0d14c91..1920e9f3fd 100644 --- a/xfa/fxfa/parser/cxfa_widgetdata.cpp +++ b/xfa/fxfa/parser/cxfa_widgetdata.cpp @@ -1323,7 +1323,10 @@ bool CXFA_WidgetData::GetBarcodeAttribute_WideNarrowRatio(float* val) { } else { int32_t fA, fB; fA = FXSYS_wtoi(wsWideNarrowRatio.Left(ptPos).c_str()); - fB = FXSYS_wtoi(wsWideNarrowRatio.Mid(ptPos + 1).c_str()); + fB = FXSYS_wtoi( + wsWideNarrowRatio + .Mid(ptPos + 1, wsWideNarrowRatio.GetLength() - (ptPos + 1)) + .c_str()); if (fB) fRatio = (float)fA / fB; } -- cgit v1.2.3