Avoid overflow when rounding 2147483616 to a 32-bit boundary.

Looks like the optimizer didn't fold my N - 1, so currently we add
N and overflow, then subtract 1 and underflow, in this one legitimate
case. Caller is responsible otherwise.

Bug: chromium:909718
Change-Id: Idec62ce25ed70897a2d3294a27a146f83c6677da
Reviewed-on: https://pdfium-review.googlesource.com/c/45873
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/core/fxcrt/fx_memory.h b/core/fxcrt/fx_memory.h
index 068f121..1e12847 100644
--- a/core/fxcrt/fx_memory.h
+++ b/core/fxcrt/fx_memory.h
@@ -134,7 +134,7 @@
 template <int N, typename T>
 inline T FxAlignToBoundary(T size) {
   static_assert(N > 0 && (N & (N - 1)) == 0, "Not non-zero power of two");
-  return (size + N - 1) & ~(N - 1);
+  return (size + (N - 1)) & ~(N - 1);
 }
 
 // Used with std::unique_ptr to FX_Free raw memory.