Add pdfium::WrapRetain<>() type deducing wrapper

Provide consistency with unique_ptrs. Use it in one spot.

Change-Id: I74f95c2e316d5550d603143e49c4b39a710e277e
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/52910
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/core/fxcrt/retain_ptr.h b/core/fxcrt/retain_ptr.h
index 02faff6..edd2663 100644
--- a/core/fxcrt/retain_ptr.h
+++ b/core/fxcrt/retain_ptr.h
@@ -130,6 +130,12 @@
   return RetainPtr<T>(new T(std::forward<Args>(args)...));
 }
 
+// Type-deducing wrapper to make a RetainPtr from an ordinary pointer.
+template <typename T>
+RetainPtr<T> WrapRetain(T* that) {
+  return RetainPtr<T>(that);
+}
+
 }  // namespace pdfium
 
 #endif  // CORE_FXCRT_RETAIN_PTR_H_
diff --git a/xfa/fgas/font/cfgas_gefont.cpp b/xfa/fgas/font/cfgas_gefont.cpp
index 07f9fce..fb5944d 100644
--- a/xfa/fgas/font/cfgas_gefont.cpp
+++ b/xfa/fgas/font/cfgas_gefont.cpp
@@ -210,7 +210,7 @@
     bool bRecursive) {
   int32_t iGlyphIndex = m_pFontEncoding->GlyphFromCharCode(wUnicode);
   if (iGlyphIndex > 0)
-    return {iGlyphIndex, RetainPtr<CFGAS_GEFont>(this)};
+    return {iGlyphIndex, pdfium::WrapRetain(this)};
 
   const FGAS_FONTUSB* pFontUSB = FGAS_GetUnicodeBitField(wUnicode);
   if (!pFontUSB)
@@ -267,6 +267,6 @@
 RetainPtr<CFGAS_GEFont> CFGAS_GEFont::GetSubstFont(int32_t iGlyphIndex) {
   iGlyphIndex = static_cast<uint32_t>(iGlyphIndex) >> 24;
   if (iGlyphIndex == 0)
-    return RetainPtr<CFGAS_GEFont>(this);
+    return pdfium::WrapRetain(this);
   return m_SubstFonts[iGlyphIndex - 1];
 }