| Index: xfa/fde/css/fde_csssyntax.cpp
|
| diff --git a/xfa/fde/css/fde_csssyntax.cpp b/xfa/fde/css/fde_csssyntax.cpp
|
| index 436a94b67ba9e74108e3307ba7aed5e742d1c548..27094e1376641c69e8afa8f6be9533f180275498 100644
|
| --- a/xfa/fde/css/fde_csssyntax.cpp
|
| +++ b/xfa/fde/css/fde_csssyntax.cpp
|
| @@ -6,6 +6,8 @@
|
|
|
| #include "xfa/fde/css/fde_csssyntax.h"
|
|
|
| +#include <algorithm>
|
| +
|
| #include "xfa/fde/css/fde_cssdatatable.h"
|
| #include "xfa/fgas/crt/fgas_codepage.h"
|
|
|
| @@ -280,16 +282,13 @@ FDE_CSSSYNTAXSTATUS CFDE_CSSSyntaxParser::DoSyntaxParse() {
|
|
|
| if (wch <= ' ' || wch == ';') {
|
| int32_t iURIStart, iURILength = m_TextData.GetLength();
|
| - if (iURILength > 0 &&
|
| - FDE_ParseCSSURI(m_TextData.GetBuffer(), iURILength, iURIStart,
|
| - iURILength)) {
|
| + if (iURILength > 0 && FDE_ParseCSSURI(m_TextData.GetBuffer(),
|
| + &iURIStart, &iURILength)) {
|
| m_TextData.Subtract(iURIStart, iURILength);
|
| SwitchMode(FDE_CSSSYNTAXMODE_MediaType);
|
| - if (IsImportEnabled()) {
|
| + if (IsImportEnabled())
|
| return FDE_CSSSYNTAXSTATUS_URI;
|
| - } else {
|
| - break;
|
| - }
|
| + break;
|
| }
|
| }
|
| AppendChar(wch);
|
| @@ -468,15 +467,10 @@ bool CFDE_CSSTextBuf::ExpandBuf(int32_t iDesiredSize) {
|
| m_iBufLen = iDesiredSize;
|
| return true;
|
| }
|
| +
|
| void CFDE_CSSTextBuf::Subtract(int32_t iStart, int32_t iLength) {
|
| - ASSERT(iStart >= 0 && iLength > 0);
|
| - if (iLength > m_iDatLen - iStart) {
|
| - iLength = m_iDatLen - iStart;
|
| - }
|
| - if (iLength < 0) {
|
| - iLength = 0;
|
| - } else {
|
| - FXSYS_memmove(m_pBuffer, m_pBuffer + iStart, iLength * sizeof(FX_WCHAR));
|
| - }
|
| + ASSERT(iStart >= 0 && iLength >= 0);
|
| + iLength = std::max(std::min(iLength, m_iDatLen - iStart), 0);
|
| + FXSYS_memmove(m_pBuffer, m_pBuffer + iStart, iLength * sizeof(FX_WCHAR));
|
| m_iDatLen = iLength;
|
| }
|
|
|