Resolve unsafe buffer usage in CPDF_PSEngine

Conversion to std::array<> and a small cleanup is all that is
required.

Bug: pdfium:2155
Change-Id: Ia7764a118ff7fb35b22e68d62bd8cf099974a1b4
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/118991
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
Reviewed-by: Thomas Sepez <tsepez@google.com>
diff --git a/core/fpdfapi/page/cpdf_psengine.cpp b/core/fpdfapi/page/cpdf_psengine.cpp
index 6b52b8b..75f3156 100644
--- a/core/fpdfapi/page/cpdf_psengine.cpp
+++ b/core/fpdfapi/page/cpdf_psengine.cpp
@@ -4,11 +4,6 @@
 
 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
 
-#if defined(UNSAFE_BUFFERS_BUILD)
-// TODO(crbug.com/pdfium/2153): resolve buffer safety issues.
-#pragma allow_unsafe_buffers
-#endif
-
 #include "core/fpdfapi/page/cpdf_psengine.h"
 
 #include <math.h>
@@ -441,9 +436,9 @@
       j %= n;
       if (j > 0)
         j -= n;
-      auto* begin_it = std::begin(m_Stack) + m_StackCount - n;
-      auto* middle_it = begin_it - j;
-      auto* end_it = std::begin(m_Stack) + m_StackCount;
+      auto begin_it = std::begin(m_Stack) + m_StackCount - n;
+      auto middle_it = begin_it - j;
+      auto end_it = std::begin(m_Stack) + m_StackCount;
       std::rotate(begin_it, middle_it, end_it);
       break;
     }
diff --git a/core/fpdfapi/page/cpdf_psengine.h b/core/fpdfapi/page/cpdf_psengine.h
index d93f516..908c701 100644
--- a/core/fpdfapi/page/cpdf_psengine.h
+++ b/core/fpdfapi/page/cpdf_psengine.h
@@ -10,6 +10,7 @@
 #include <stddef.h>
 #include <stdint.h>
 
+#include <array>
 #include <memory>
 #include <vector>
 
@@ -127,7 +128,7 @@
 
   uint32_t m_StackCount = 0;
   CPDF_PSProc m_MainProc;
-  float m_Stack[kPSEngineStackSize] = {};
+  std::array<float, kPSEngineStackSize> m_Stack = {};
 };
 
 #endif  // CORE_FPDFAPI_PAGE_CPDF_PSENGINE_H_