OLD | NEW |
1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
6 | 6 |
7 #include "xfa/fxfa/parser/xfa_basic_imp.h" | 7 #include "xfa/fxfa/parser/xfa_basic_imp.h" |
8 | 8 |
9 #include "core/fxcrt/include/fx_ext.h" | 9 #include "core/fxcrt/include/fx_ext.h" |
10 #include "xfa/fgas/crt/fgas_codepage.h" | 10 #include "xfa/fgas/crt/fgas_codepage.h" |
(...skipping 539 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
550 int32_t CXFA_WideTextRead::GetPosition() { | 550 int32_t CXFA_WideTextRead::GetPosition() { |
551 return m_iPosition * sizeof(FX_WCHAR); | 551 return m_iPosition * sizeof(FX_WCHAR); |
552 } | 552 } |
553 FX_BOOL CXFA_WideTextRead::IsEOF() const { | 553 FX_BOOL CXFA_WideTextRead::IsEOF() const { |
554 return m_iPosition >= m_wsBuffer.GetLength(); | 554 return m_iPosition >= m_wsBuffer.GetLength(); |
555 } | 555 } |
556 int32_t CXFA_WideTextRead::ReadString(FX_WCHAR* pStr, | 556 int32_t CXFA_WideTextRead::ReadString(FX_WCHAR* pStr, |
557 int32_t iMaxLength, | 557 int32_t iMaxLength, |
558 FX_BOOL& bEOS, | 558 FX_BOOL& bEOS, |
559 int32_t const* pByteSize) { | 559 int32_t const* pByteSize) { |
560 if (iMaxLength > m_wsBuffer.GetLength() - m_iPosition) { | 560 iMaxLength = std::min(iMaxLength, m_wsBuffer.GetLength() - m_iPosition); |
561 iMaxLength = m_wsBuffer.GetLength() - m_iPosition; | 561 if (iMaxLength == 0) |
562 } | 562 return 0; |
| 563 |
563 FXSYS_wcsncpy(pStr, m_wsBuffer.c_str() + m_iPosition, iMaxLength); | 564 FXSYS_wcsncpy(pStr, m_wsBuffer.c_str() + m_iPosition, iMaxLength); |
564 m_iPosition += iMaxLength; | 565 m_iPosition += iMaxLength; |
565 bEOS = IsEOF(); | 566 bEOS = IsEOF(); |
566 return iMaxLength; | 567 return iMaxLength; |
567 } | 568 } |
568 uint16_t CXFA_WideTextRead::GetCodePage() const { | 569 uint16_t CXFA_WideTextRead::GetCodePage() const { |
569 return (sizeof(FX_WCHAR) == 2) ? FX_CODEPAGE_UTF16LE : FX_CODEPAGE_UTF32LE; | 570 return (sizeof(FX_WCHAR) == 2) ? FX_CODEPAGE_UTF16LE : FX_CODEPAGE_UTF32LE; |
570 } | 571 } |
571 uint16_t CXFA_WideTextRead::SetCodePage(uint16_t wCodePage) { | 572 uint16_t CXFA_WideTextRead::SetCodePage(uint16_t wCodePage) { |
572 return GetCodePage(); | 573 return GetCodePage(); |
573 } | 574 } |
OLD | NEW |