Use AutoRestorer in CPDF_StreamParser::ReadInlineStream()

Restore a position value automatically. Then remove a superfluous
assignment that the AutoRestorer immediately overwrites, and combine
some duplicate code.

Change-Id: Icad7451655a2892f9e6dc7d1ee2269b809a1f2e2
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/127853
Commit-Queue: Lei Zhang <thestig@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Reviewed-by: Thomas Sepez <tsepez@google.com>
diff --git a/core/fpdfapi/page/cpdf_streamparser.cpp b/core/fpdfapi/page/cpdf_streamparser.cpp
index 9629663..37cef4a 100644
--- a/core/fpdfapi/page/cpdf_streamparser.cpp
+++ b/core/fpdfapi/page/cpdf_streamparser.cpp
@@ -25,6 +25,7 @@
 #include "core/fxcodec/data_and_bytes_consumed.h"
 #include "core/fxcodec/jpeg/jpegmodule.h"
 #include "core/fxcodec/scanlinedecoder.h"
+#include "core/fxcrt/autorestorer.h"
 #include "core/fxcrt/check.h"
 #include "core/fxcrt/data_vector.h"
 #include "core/fxcrt/fx_extension.h"
@@ -199,26 +200,20 @@
       return nullptr;
     }
 
-    uint32_t saved_position = m_Pos;
-    m_Pos += stream_size;
-    while (true) {
-      uint32_t saved_iteration_position = m_Pos;
-      ElementType type = ParseNextElement();
-      if (type == ElementType::kEndOfData) {
-        break;
-      }
+    {
+      AutoRestorer<uint32_t> saved_position(&m_Pos);
+      m_Pos += stream_size;
+      while (true) {
+        uint32_t saved_iteration_position = m_Pos;
+        ElementType type = ParseNextElement();
+        if (type == ElementType::kEndOfData ||
+            (type == ElementType::kKeyword && GetWord() == "EI")) {
+          break;
+        }
 
-      if (type != ElementType::kKeyword) {
         stream_size += m_Pos - saved_iteration_position;
-        continue;
       }
-      if (GetWord() == "EI") {
-        m_Pos = saved_iteration_position;
-        break;
-      }
-      stream_size += m_Pos - saved_iteration_position;
     }
-    m_Pos = saved_position;
     auto src_span = m_pBuf.subspan(m_Pos, stream_size);
     data = DataVector<uint8_t>(src_span.begin(), src_span.end());
     m_Pos += stream_size;