FPDFTextObj_GetFontSize(): differentiate between 0 font size and failure
Add an explicit output parameter, so the return value can focus on
success vs failure.
Bug: pdfium:1695
Change-Id: Ia0a8d0605a299939f6b3c1f6a25eba90eb7eb49c
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/82330
Commit-Queue: Lei Zhang <thestig@chromium.org>
Reviewed-by: Lei Zhang <thestig@chromium.org>
diff --git a/fpdfsdk/fpdf_edit_embeddertest.cpp b/fpdfsdk/fpdf_edit_embeddertest.cpp
index f60445b..5c91317 100644
--- a/fpdfsdk/fpdf_edit_embeddertest.cpp
+++ b/fpdfsdk/fpdf_edit_embeddertest.cpp
@@ -2294,8 +2294,10 @@
EXPECT_FLOAT_EQ(200.0f, matrix.e);
EXPECT_FLOAT_EQ(200.0f, matrix.f);
- EXPECT_EQ(0, FPDFTextObj_GetFontSize(nullptr));
- EXPECT_EQ(20, FPDFTextObj_GetFontSize(text_object3));
+ EXPECT_FALSE(FPDFTextObj_GetFontSize(nullptr, nullptr));
+ float size = 0;
+ EXPECT_TRUE(FPDFTextObj_GetFontSize(text_object3, &size));
+ EXPECT_EQ(20, size);
// TODO(npm): Why are there issues with text rotated by 90 degrees?
// TODO(npm): FPDF_SaveAsCopy not giving the desired result after this.
@@ -2314,9 +2316,9 @@
EXPECT_TRUE(FPDFText_SetText(text_object, text.get()));
FPDFPageObj_Transform(text_object, 1, 0, 0, 1, 20, 20);
- // TODO(crbug.com/pdfium/1695): A return value of 0 is suppose to mean
- // failure. Did FPDFTextObj_GetFontSize() fail here?
- EXPECT_EQ(0.0f, FPDFTextObj_GetFontSize(text_object));
+ float size = -1; // Make sure 'size' gets changed.
+ EXPECT_TRUE(FPDFTextObj_GetFontSize(text_object, &size));
+ EXPECT_EQ(0.0f, size);
FPDFPage_InsertObject(page.get(), text_object);
EXPECT_TRUE(FPDFPage_GenerateContent(page.get()));
diff --git a/fpdfsdk/fpdf_edittext.cpp b/fpdfsdk/fpdf_edittext.cpp
index 849bab5..fde0b40 100644
--- a/fpdfsdk/fpdf_edittext.cpp
+++ b/fpdfsdk/fpdf_edittext.cpp
@@ -532,9 +532,17 @@
return true;
}
-FPDF_EXPORT float FPDF_CALLCONV FPDFTextObj_GetFontSize(FPDF_PAGEOBJECT text) {
+FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
+FPDFTextObj_GetFontSize(FPDF_PAGEOBJECT text, float* size) {
+ if (!size)
+ return false;
+
CPDF_TextObject* pTextObj = CPDFTextObjectFromFPDFPageObject(text);
- return pTextObj ? pTextObj->GetFontSize() : 0.0f;
+ if (!pTextObj)
+ return false;
+
+ *size = pTextObj->GetFontSize();
+ return true;
}
FPDF_EXPORT unsigned long FPDF_CALLCONV
diff --git a/public/fpdf_edit.h b/public/fpdf_edit.h
index 6fd3740..3c9642b 100644
--- a/public/fpdf_edit.h
+++ b/public/fpdf_edit.h
@@ -1123,10 +1123,12 @@
// Get the font size of a text object.
//
// text - handle to a text.
+// size - pointer to the font size of the text object, measured in points
+// (about 1/72 inch)
//
-// Returns the font size of the text object, measured in points (about 1/72
-// inch) on success; 0 on failure.
-FPDF_EXPORT float FPDF_CALLCONV FPDFTextObj_GetFontSize(FPDF_PAGEOBJECT text);
+// Returns TRUE on success.
+FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
+FPDFTextObj_GetFontSize(FPDF_PAGEOBJECT text, float* size);
// Close a loaded PDF font.
//