diff options
-rw-r--r-- | fpdfsdk/fpdfedit_embeddertest.cpp | 24 | ||||
-rw-r--r-- | fpdfsdk/fpdfeditimg.cpp | 11 | ||||
-rw-r--r-- | public/fpdf_edit.h | 2 |
3 files changed, 20 insertions, 17 deletions
diff --git a/fpdfsdk/fpdfedit_embeddertest.cpp b/fpdfsdk/fpdfedit_embeddertest.cpp index 6dc177e2b5..71933fea43 100644 --- a/fpdfsdk/fpdfedit_embeddertest.cpp +++ b/fpdfsdk/fpdfedit_embeddertest.cpp @@ -1056,10 +1056,10 @@ TEST_F(FPDFEditEmbeddertest, GetImageFilters) { ASSERT_EQ(1, FPDFImageObj_GetImageFilterCount(obj)); unsigned long len = FPDFImageObj_GetImageFilter(obj, 0, nullptr, 0); std::vector<char> buf(len); - EXPECT_EQ(24u, FPDFImageObj_GetImageFilter(obj, 0, buf.data(), len)); - EXPECT_STREQ(L"FlateDecode", - GetPlatformWString(reinterpret_cast<unsigned short*>(buf.data())) - .c_str()); + static constexpr char kFlateDecode[] = "FlateDecode"; + EXPECT_EQ(sizeof(kFlateDecode), + FPDFImageObj_GetImageFilter(obj, 0, buf.data(), len)); + EXPECT_STREQ(kFlateDecode, buf.data()); EXPECT_EQ(0u, FPDFImageObj_GetImageFilter(obj, 1, nullptr, 0)); // Verify all the filters for an image object with a list of filters. @@ -1069,18 +1069,18 @@ TEST_F(FPDFEditEmbeddertest, GetImageFilters) { len = FPDFImageObj_GetImageFilter(obj, 0, nullptr, 0); buf.clear(); buf.resize(len); - EXPECT_EQ(30u, FPDFImageObj_GetImageFilter(obj, 0, buf.data(), len)); - EXPECT_STREQ(L"ASCIIHexDecode", - GetPlatformWString(reinterpret_cast<unsigned short*>(buf.data())) - .c_str()); + static constexpr char kASCIIHexDecode[] = "ASCIIHexDecode"; + EXPECT_EQ(sizeof(kASCIIHexDecode), + FPDFImageObj_GetImageFilter(obj, 0, buf.data(), len)); + EXPECT_STREQ(kASCIIHexDecode, buf.data()); len = FPDFImageObj_GetImageFilter(obj, 1, nullptr, 0); buf.clear(); buf.resize(len); - EXPECT_EQ(20u, FPDFImageObj_GetImageFilter(obj, 1, buf.data(), len)); - EXPECT_STREQ(L"DCTDecode", - GetPlatformWString(reinterpret_cast<unsigned short*>(buf.data())) - .c_str()); + static constexpr char kDCTDecode[] = "DCTDecode"; + EXPECT_EQ(sizeof(kDCTDecode), + FPDFImageObj_GetImageFilter(obj, 1, buf.data(), len)); + EXPECT_STREQ(kDCTDecode, buf.data()); UnloadPage(page); } diff --git a/fpdfsdk/fpdfeditimg.cpp b/fpdfsdk/fpdfeditimg.cpp index 662ad23d76..5e3191635e 100644 --- a/fpdfsdk/fpdfeditimg.cpp +++ b/fpdfsdk/fpdfeditimg.cpp @@ -244,13 +244,16 @@ FPDFImageObj_GetImageFilter(FPDF_PAGEOBJECT image_object, CPDF_PageObject* pObj = CPDFPageObjectFromFPDFPageObject(image_object); CPDF_Object* pFilter = pObj->AsImage()->GetImage()->GetDict()->GetDirectObjectFor("Filter"); - CFX_WideString wsFilters; + CFX_ByteString bsFilter; if (pFilter->IsName()) - wsFilters = pFilter->AsName()->GetUnicodeText(); + bsFilter = pFilter->AsName()->GetString(); else - wsFilters = pFilter->AsArray()->GetUnicodeTextAt(index); + bsFilter = pFilter->AsArray()->GetStringAt(index); - return Utf16EncodeMaybeCopyAndReturnLength(wsFilters, buffer, buflen); + unsigned long len = bsFilter.GetLength() + 1; + if (buffer && len <= buflen) + memcpy(buffer, bsFilter.c_str(), len); + return len; } FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV diff --git a/public/fpdf_edit.h b/public/fpdf_edit.h index c547f07890..22582674ea 100644 --- a/public/fpdf_edit.h +++ b/public/fpdf_edit.h @@ -385,7 +385,7 @@ FPDFImageObj_GetImageFilterCount(FPDF_PAGEOBJECT image_object); // // image_object - handle to an image object. // index - the index of the filter requested. -// buffer - buffer for holding filter string, encoded in UTF16-LE. +// buffer - buffer for holding filter string, encoded in UTF-8. // buflen - length of the buffer. // // Returns the length of the filter string. |