Avoid some copies in CPDF_TextPage::AddCharInfoBy*()

Instead of always copying the char info structure at the start of the
methods, only copy later when needed. Also give the copy a better name.

Change-Id: Ic41b563ec5348dced39d30641ba87ca0403a3b3f
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/133570
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/core/fpdftext/cpdf_textpage.cpp b/core/fpdftext/cpdf_textpage.cpp
index 204def4..dbc3053 100644
--- a/core/fpdftext/cpdf_textpage.cpp
+++ b/core/fpdftext/cpdf_textpage.cpp
@@ -781,48 +781,50 @@
 
 void CPDF_TextPage::AddCharInfoByLRDirection(wchar_t wChar,
                                              const CharInfo& info) {
-  CharInfo info2 = info;
-  if (IsControlChar(info2)) {
-    char_list_.push_back(info2);
+  if (IsControlChar(info)) {
+    char_list_.push_back(info);
     return;
   }
+
   DataVector<wchar_t> normalized;
   if (wChar >= 0xFB00 && wChar <= 0xFB06) {
     normalized = GetUnicodeNormalization(wChar);
   }
   if (normalized.empty()) {
     text_buf_.AppendChar(wChar);
-    char_list_.push_back(info2);
+    char_list_.push_back(info);
     return;
   }
-  info2.set_char_type(CharType::kPiece);
+  CharInfo modified_info = info;
+  modified_info.set_char_type(CharType::kPiece);
   for (wchar_t normalized_char : normalized) {
-    info2.set_unicode(normalized_char);
+    modified_info.set_unicode(normalized_char);
     text_buf_.AppendChar(normalized_char);
-    char_list_.push_back(info2);
+    char_list_.push_back(modified_info);
   }
 }
 
 void CPDF_TextPage::AddCharInfoByRLDirection(wchar_t wChar,
                                              const CharInfo& info) {
-  CharInfo info2 = info;
-  if (IsControlChar(info2)) {
-    char_list_.push_back(info2);
+  if (IsControlChar(info)) {
+    char_list_.push_back(info);
     return;
   }
+
+  CharInfo modified_info = info;
   wChar = pdfium::unicode::GetMirrorChar(wChar);
   DataVector<wchar_t> normalized = GetUnicodeNormalization(wChar);
   if (normalized.empty()) {
-    info2.set_unicode(wChar);
+    modified_info.set_unicode(wChar);
     text_buf_.AppendChar(wChar);
-    char_list_.push_back(info2);
+    char_list_.push_back(modified_info);
     return;
   }
-  info2.set_char_type(CharType::kPiece);
+  modified_info.set_char_type(CharType::kPiece);
   for (wchar_t normalized_char : normalized) {
-    info2.set_unicode(normalized_char);
+    modified_info.set_unicode(normalized_char);
     text_buf_.AppendChar(normalized_char);
-    char_list_.push_back(info2);
+    char_list_.push_back(modified_info);
   }
 }