Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(225)

Side by Side Diff: core/fpdfapi/page/cpdf_streamcontentparser.cpp

Issue 2509123002: Make CPDF_Object subclass constructors intern strings (Closed)
Patch Set: Nits Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « core/fpdfapi/page/cpdf_docpagedata.cpp ('k') | core/fpdfapi/page/cpdf_streamparser.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 PDFium Authors. All rights reserved. 1 // Copyright 2016 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 "core/fpdfapi/page/cpdf_streamcontentparser.h" 7 #include "core/fpdfapi/page/cpdf_streamcontentparser.h"
8 8
9 #include <memory> 9 #include <memory>
10 #include <utility> 10 #include <utility>
(...skipping 305 matching lines...) Expand 10 before | Expand all | Expand 10 after
316 } 316 }
317 m_ParamCount++; 317 m_ParamCount++;
318 return index; 318 return index;
319 } 319 }
320 320
321 void CPDF_StreamContentParser::AddNameParam(const FX_CHAR* name, int len) { 321 void CPDF_StreamContentParser::AddNameParam(const FX_CHAR* name, int len) {
322 CFX_ByteStringC bsName(name, len); 322 CFX_ByteStringC bsName(name, len);
323 ContentParam& param = m_ParamBuf[GetNextParamPos()]; 323 ContentParam& param = m_ParamBuf[GetNextParamPos()];
324 if (len > 32) { 324 if (len > 32) {
325 param.m_Type = ContentParam::OBJECT; 325 param.m_Type = ContentParam::OBJECT;
326 param.m_pObject = new CPDF_Name( 326 param.m_pObject =
327 m_pDocument->GetByteStringPool()->Intern(PDF_NameDecode(bsName))); 327 new CPDF_Name(m_pDocument->GetByteStringPool(), PDF_NameDecode(bsName));
328 } else { 328 } else {
329 param.m_Type = ContentParam::NAME; 329 param.m_Type = ContentParam::NAME;
330 if (bsName.Find('#') == -1) { 330 if (bsName.Find('#') == -1) {
331 FXSYS_memcpy(param.m_Name.m_Buffer, name, len); 331 FXSYS_memcpy(param.m_Name.m_Buffer, name, len);
332 param.m_Name.m_Len = len; 332 param.m_Name.m_Len = len;
333 } else { 333 } else {
334 CFX_ByteString str = PDF_NameDecode(bsName); 334 CFX_ByteString str = PDF_NameDecode(bsName);
335 FXSYS_memcpy(param.m_Name.m_Buffer, str.c_str(), str.GetLength()); 335 FXSYS_memcpy(param.m_Name.m_Buffer, str.c_str(), str.GetLength());
336 param.m_Name.m_Len = str.GetLength(); 336 param.m_Name.m_Len = str.GetLength();
337 } 337 }
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
378 if (param.m_Type == ContentParam::NUMBER) { 378 if (param.m_Type == ContentParam::NUMBER) {
379 CPDF_Number* pNumber = param.m_Number.m_bInteger 379 CPDF_Number* pNumber = param.m_Number.m_bInteger
380 ? new CPDF_Number(param.m_Number.m_Integer) 380 ? new CPDF_Number(param.m_Number.m_Integer)
381 : new CPDF_Number(param.m_Number.m_Float); 381 : new CPDF_Number(param.m_Number.m_Float);
382 382
383 param.m_Type = ContentParam::OBJECT; 383 param.m_Type = ContentParam::OBJECT;
384 param.m_pObject = pNumber; 384 param.m_pObject = pNumber;
385 return pNumber; 385 return pNumber;
386 } 386 }
387 if (param.m_Type == ContentParam::NAME) { 387 if (param.m_Type == ContentParam::NAME) {
388 CPDF_Name* pName = new CPDF_Name(m_pDocument->GetByteStringPool()->Intern( 388 CPDF_Name* pName = new CPDF_Name(
389 CFX_ByteString(param.m_Name.m_Buffer, param.m_Name.m_Len))); 389 m_pDocument->GetByteStringPool(),
390 CFX_ByteString(param.m_Name.m_Buffer, param.m_Name.m_Len));
390 param.m_Type = ContentParam::OBJECT; 391 param.m_Type = ContentParam::OBJECT;
391 param.m_pObject = pName; 392 param.m_pObject = pName;
392 return pName; 393 return pName;
393 } 394 }
394 if (param.m_Type == ContentParam::OBJECT) { 395 if (param.m_Type == ContentParam::OBJECT) {
395 return param.m_pObject; 396 return param.m_pObject;
396 } 397 }
397 ASSERT(false); 398 ASSERT(false);
398 return nullptr; 399 return nullptr;
399 } 400 }
(...skipping 1261 matching lines...) Expand 10 before | Expand all | Expand 10 after
1661 } 1662 }
1662 default: 1663 default:
1663 bProcessed = false; 1664 bProcessed = false;
1664 } 1665 }
1665 if (!bProcessed) { 1666 if (!bProcessed) {
1666 m_pSyntax->SetPos(last_pos); 1667 m_pSyntax->SetPos(last_pos);
1667 return; 1668 return;
1668 } 1669 }
1669 } 1670 }
1670 } 1671 }
OLDNEW
« no previous file with comments | « core/fpdfapi/page/cpdf_docpagedata.cpp ('k') | core/fpdfapi/page/cpdf_streamparser.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698