Pass retained arguments to CFX_Face::New()
Alas, callers have to copy and remain unadjusted, but it is
the same work since we move in the new code.
Bug: pdfium:1843
Change-Id: I82822099d3baaea68c36ab5e6e01a3babb7363e5
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/95631
Commit-Queue: Tom Sepez <tsepez@chromium.org>
Reviewed-by: Lei Zhang <thestig@chromium.org>
diff --git a/core/fxge/cfx_face.cpp b/core/fxge/cfx_face.cpp
index d838a4b..50e0bc3 100644
--- a/core/fxge/cfx_face.cpp
+++ b/core/fxge/cfx_face.cpp
@@ -4,12 +4,14 @@
#include "core/fxge/cfx_face.h"
+#include <utility>
+
#include "third_party/base/check.h"
#include "third_party/base/numerics/safe_conversions.h"
// static
RetainPtr<CFX_Face> CFX_Face::New(FT_Library library,
- const RetainPtr<Retainable>& pDesc,
+ RetainPtr<Retainable> pDesc,
pdfium::span<const FT_Byte> data,
FT_Long face_index) {
FXFT_FaceRec* pRec = nullptr;
@@ -18,7 +20,8 @@
face_index, &pRec) != 0) {
return nullptr;
}
- return pdfium::WrapRetain(new CFX_Face(pRec, pDesc));
+ // Private ctor.
+ return pdfium::WrapRetain(new CFX_Face(pRec, std::move(pDesc)));
}
// static
@@ -29,11 +32,12 @@
if (FT_Open_Face(library, args, face_index, &pRec) != 0)
return nullptr;
+ // Private ctor.
return pdfium::WrapRetain(new CFX_Face(pRec, nullptr));
}
-CFX_Face::CFX_Face(FXFT_FaceRec* rec, const RetainPtr<Retainable>& pDesc)
- : m_pRec(rec), m_pDesc(pDesc) {
+CFX_Face::CFX_Face(FXFT_FaceRec* rec, RetainPtr<Retainable> pDesc)
+ : m_pRec(rec), m_pDesc(std::move(pDesc)) {
DCHECK(m_pRec);
}
diff --git a/core/fxge/cfx_face.h b/core/fxge/cfx_face.h
index a4f527f..4ab5c78 100644
--- a/core/fxge/cfx_face.h
+++ b/core/fxge/cfx_face.h
@@ -13,7 +13,7 @@
class CFX_Face final : public Retainable, public Observable {
public:
static RetainPtr<CFX_Face> New(FT_Library library,
- const RetainPtr<Retainable>& pDesc,
+ RetainPtr<Retainable> pDesc,
pdfium::span<const FT_Byte> data,
FT_Long face_index);
@@ -26,7 +26,7 @@
FXFT_FaceRec* GetRec() { return m_pRec.get(); }
private:
- CFX_Face(FXFT_FaceRec* pRec, const RetainPtr<Retainable>& pDesc);
+ CFX_Face(FXFT_FaceRec* pRec, RetainPtr<Retainable> pDesc);
ScopedFXFTFaceRec const m_pRec;
RetainPtr<Retainable> const m_pDesc;
diff --git a/core/fxge/cfx_fontmgr.cpp b/core/fxge/cfx_fontmgr.cpp
index 9b2b6f5..eacffc2 100644
--- a/core/fxge/cfx_fontmgr.cpp
+++ b/core/fxge/cfx_fontmgr.cpp
@@ -116,11 +116,12 @@
return pNewDesc;
}
-RetainPtr<CFX_Face> CFX_FontMgr::NewFixedFace(const RetainPtr<FontDesc>& pDesc,
+RetainPtr<CFX_Face> CFX_FontMgr::NewFixedFace(RetainPtr<FontDesc> pDesc,
pdfium::span<const uint8_t> span,
size_t face_index) {
- RetainPtr<CFX_Face> face = CFX_Face::New(m_FTLibrary.get(), pDesc, span,
- static_cast<FT_Long>(face_index));
+ RetainPtr<CFX_Face> face =
+ CFX_Face::New(m_FTLibrary.get(), std::move(pDesc), span,
+ static_cast<FT_Long>(face_index));
if (!face)
return nullptr;
diff --git a/core/fxge/cfx_fontmgr.h b/core/fxge/cfx_fontmgr.h
index dfbb753..5bb9620 100644
--- a/core/fxge/cfx_fontmgr.h
+++ b/core/fxge/cfx_fontmgr.h
@@ -70,7 +70,7 @@
std::unique_ptr<uint8_t, FxFreeDeleter> pData,
size_t size);
- RetainPtr<CFX_Face> NewFixedFace(const RetainPtr<FontDesc>& pDesc,
+ RetainPtr<CFX_Face> NewFixedFace(RetainPtr<FontDesc> pDesc,
pdfium::span<const uint8_t> span,
size_t face_index);