Use third_party/fast_float to convert strings to floats/doubles instead The existing implementation of StringTo() rounds to the incorrect float/double value for values with precision error. Replace the implementation to use third_party/fast_float, which fixes the rounding error, is easier to read, and is supposedly fast. Update pixel tests and checksums. There should be little to no visible differences in the PDFs. Bug: 364338789, 366309453 Change-Id: I51f4aa9b7fa7a53306d8a2bd604547cfb079eb30 Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/124412 Commit-Queue: Andy Phan <andyphan@chromium.org> Reviewed-by: Lei Zhang <thestig@chromium.org>
diff --git a/DEPS b/DEPS index 15ccc6e..93aa97d 100644 --- a/DEPS +++ b/DEPS
@@ -178,7 +178,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling pdfium_tests # and whatever else without interference from each other. - 'pdfium_tests_revision': '687c70fa09d92782a44516a7aa0a382881da277b', + 'pdfium_tests_revision': '7e9430c92e07cf45bd151bd4158a7795d117ffeb', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling resultdb # and whatever else without interference from each other.
diff --git a/core/fpdfapi/edit/cpdf_pagecontentgenerator_unittest.cpp b/core/fpdfapi/edit/cpdf_pagecontentgenerator_unittest.cpp index c36e2b7..75d7fe7 100644 --- a/core/fpdfapi/edit/cpdf_pagecontentgenerator_unittest.cpp +++ b/core/fpdfapi/edit/cpdf_pagecontentgenerator_unittest.cpp
@@ -443,6 +443,6 @@ generator.ProcessPageObjects(&process_buf); EXPECT_EQ( "q 3.102 4.6700001 m 5.4500012 .28999999 l 4.2399998 3.14" - "99999 4.6500001 2.98 3.4560001 .24000001 c 3.102 4.6700001 l h f Q\n", + "99999 4.6500001 2.98 3.4560001 .23999999 c 3.102 4.6700001 l h f Q\n", ByteString(process_buf)); }
diff --git a/core/fpdfapi/render/fpdf_progressive_render_embeddertest.cpp b/core/fpdfapi/render/fpdf_progressive_render_embeddertest.cpp index b6c40c7..0d6b92c 100644 --- a/core/fpdfapi/render/fpdf_progressive_render_embeddertest.cpp +++ b/core/fpdfapi/render/fpdf_progressive_render_embeddertest.cpp
@@ -449,14 +449,14 @@ const char* content_with_ink_checksum = []() { if (CFX_DefaultRenderDevice::UseSkiaRenderer()) { #if BUILDFLAG(IS_WIN) - return "cddb7472b064782b2866aa3dc87ca73e"; + return "0b9e2044a71465ed8af639527c3cc94a"; #elif BUILDFLAG(IS_APPLE) - return "0ef02da77fc1e08455148ecadd257e06"; + return "62c1dddb6440dd8180abf51d986141e4"; #else - return "bd9d457356dba5fcf33ec9afdaefcab8"; + return "32678124d0789c09aa61028de3a8cbcf"; #endif } - return "797bce7dc6c50ee86b095405df9fe5aa"; + return "546c99e50c4f2c66fc7ac02e1a834e57"; }(); ASSERT_TRUE(OpenDocument("annotation_ink_multiple.pdf")); @@ -471,17 +471,17 @@ const char* content_with_stamp_checksum = []() { if (CFX_DefaultRenderDevice::UseSkiaRenderer()) { #if BUILDFLAG(IS_WIN) - return "c35d1256f6684da13023a0e74622c885"; + return "7e4d84b094fc44094e647803572ae49a"; #elif BUILDFLAG(IS_APPLE) - return "bb302d8808633fede3b6e2e39ac8aaa7"; + return "f1f1288805d1afd93397c2f24080b741"; #else - return "1bd68054628cf193b399a16638ecb5f9"; + return "4e42fb3e87ff8276a549d7a755997766"; #endif } #if BUILDFLAG(IS_APPLE) - return "8170c539e95f22f14eb8f266a5f1bbed"; + return "ed794dc3e110ddb60aab788bd3d63598"; #else - return "d1fd087e59d4dcebf47b56570bdb8c22"; + return "f61b2f70101073cc9e8905e16e3923ed"; #endif }();
diff --git a/core/fxcrt/BUILD.gn b/core/fxcrt/BUILD.gn index 6479f8d..21060a4 100644 --- a/core/fxcrt/BUILD.gn +++ b/core/fxcrt/BUILD.gn
@@ -146,6 +146,7 @@ "../../:pdfium_strict_config", "../../:pdfium_noshorten_config", ] + deps = [ "//third_party/fast_float" ] public_deps = [ "../../:freetype_common", "//third_party/abseil-cpp:absl",
diff --git a/core/fxcrt/DEPS b/core/fxcrt/DEPS index 2e9180b..f693bd1 100644 --- a/core/fxcrt/DEPS +++ b/core/fxcrt/DEPS
@@ -2,3 +2,9 @@ '+partition_alloc', '+third_party/icu', ] + +specific_include_rules = { + 'fx_string.cpp': [ + '+third_party/fast_float/src/include/fast_float/fast_float.h', + ], +}
diff --git a/core/fxcrt/fx_string.cpp b/core/fxcrt/fx_string.cpp index 948c255..1443c29 100644 --- a/core/fxcrt/fx_string.cpp +++ b/core/fxcrt/fx_string.cpp
@@ -19,6 +19,7 @@ #include "core/fxcrt/span.h" #include "core/fxcrt/utf16.h" #include "core/fxcrt/widestring.h" +#include "third_party/fast_float/src/include/fast_float/fast_float.h" #if !defined(WCHAR_T_IS_16_BIT) && !defined(WCHAR_T_IS_32_BIT) #error "Unknown wchar_t size" @@ -98,60 +99,36 @@ namespace { -constexpr float kFractionScalesFloat[] = { - 0.1f, 0.01f, 0.001f, 0.0001f, - 0.00001f, 0.000001f, 0.0000001f, 0.00000001f, - 0.000000001f, 0.0000000001f, 0.00000000001f}; - -const double kFractionScalesDouble[] = { - 0.1, 0.01, 0.001, 0.0001, 0.00001, 0.000001, - 0.0000001, 0.00000001, 0.000000001, 0.0000000001, 0.00000000001}; - template <class T> -T StringTo(ByteStringView strc, pdfium::span<const T> fractional_scales) { - if (strc.IsEmpty()) - return 0; - - bool bNegative = false; - size_t cc = 0; +T StringTo(ByteStringView strc) { + // Skip leading whitespaces. + size_t start = 0; size_t len = strc.GetLength(); - if (strc[0] == '+') { - cc++; - } else if (strc[0] == '-') { - bNegative = true; - cc++; + while (start < len && strc[start] == ' ') { + ++start; } - while (cc < len) { - if (strc[cc] != '+' && strc[cc] != '-') - break; - cc++; + + // Skip a leading '+' sign. + if (start < len && strc[start] == '+') { + ++start; } - T value = 0; - while (cc < len) { - if (strc[cc] == '.') - break; - value = value * 10 + FXSYS_DecimalCharToInt(strc.CharAt(cc)); - cc++; - } - size_t scale = 0; - if (cc < len && strc[cc] == '.') { - cc++; - while (cc < len) { - value += - fractional_scales[scale] * FXSYS_DecimalCharToInt(strc.CharAt(cc)); - scale++; - if (scale == fractional_scales.size()) - break; - cc++; - } - } - return bNegative ? -value : value; + + ByteStringView sub_strc = strc.Substr(start, len - start); + + T value; + auto result = fast_float::from_chars(sub_strc.begin(), sub_strc.end(), value); + + // Return 0 for parsing errors. Some examples of errors are an empty string + // and a string that cannot be converted to T. + return result.ec == std::errc() || result.ec == std::errc::result_out_of_range + ? value + : 0; } } // namespace float StringToFloat(ByteStringView strc) { - return StringTo<float>(strc, kFractionScalesFloat); + return StringTo<float>(strc); } float StringToFloat(WideStringView wsStr) { @@ -159,7 +136,7 @@ } double StringToDouble(ByteStringView strc) { - return StringTo<double>(strc, kFractionScalesDouble); + return StringTo<double>(strc); } double StringToDouble(WideStringView wsStr) {
diff --git a/core/fxcrt/fx_string_unittest.cpp b/core/fxcrt/fx_string_unittest.cpp index 601deb2..b9e74e3 100644 --- a/core/fxcrt/fx_string_unittest.cpp +++ b/core/fxcrt/fx_string_unittest.cpp
@@ -76,8 +76,7 @@ EXPECT_FLOAT_EQ(0.25f, StringToFloat(L"+0.25")); - // TODO(crbug.com/367395351): Should be 1.2e34f. - EXPECT_FLOAT_EQ(1.2034f, StringToFloat("1.2e34")); + EXPECT_FLOAT_EQ(1.2e34f, StringToFloat("1.2e34")); EXPECT_FLOAT_EQ(std::numeric_limits<float>::infinity(), StringToFloat("999999999999999999999999999999999999999")); @@ -88,8 +87,7 @@ // Test the exact float value. Use EXPECT_EQ, which does an exact comparison, // instead of EXPECT_FLOAT_EQ, which allows slight precision error. - // TODO(crbug.com/366309453): Should round to 38.89528656005859375f. - EXPECT_EQ(38.895282745361328125f, StringToFloat("38.895285")); + EXPECT_EQ(38.89528656005859375f, StringToFloat("38.895285")); } TEST(fxstring, WideStringToFloat) { @@ -116,8 +114,7 @@ EXPECT_FLOAT_EQ(0.25f, StringToFloat(L"+0.25")); - // TODO(crbug.com/367395351): Should be 1.2e34f. - EXPECT_FLOAT_EQ(1.2034f, StringToFloat(L"1.2e34")); + EXPECT_FLOAT_EQ(1.2e34f, StringToFloat(L"1.2e34")); EXPECT_FLOAT_EQ(std::numeric_limits<float>::infinity(), StringToFloat(L"999999999999999999999999999999999999999")); @@ -128,8 +125,7 @@ // Test the exact float value. Use EXPECT_EQ, which does an exact comparison, // instead of EXPECT_FLOAT_EQ, which allows slight precision error. - // TODO(crbug.com/366309453): Should round to 38.89528656005859375f. - EXPECT_EQ(38.895282745361328125f, StringToFloat(L"38.895285")); + EXPECT_EQ(38.89528656005859375f, StringToFloat(L"38.895285")); } TEST(fxstring, ByteStringToDouble) { @@ -156,8 +152,7 @@ EXPECT_DOUBLE_EQ(0.25, StringToDouble("+0.25")); - // TODO(crbug.com/367395351): Should be 1.2e34. - EXPECT_DOUBLE_EQ(1.2034, StringToDouble("1.2e34")); + EXPECT_DOUBLE_EQ(1.2e34, StringToDouble("1.2e34")); EXPECT_DOUBLE_EQ( std::numeric_limits<double>::infinity(), @@ -180,8 +175,7 @@ // Test the exact double value. Use EXPECT_EQ, which does an exact comparison, // instead of EXPECT_DOUBLE_EQ, which allows slight precision error. - // TODO(crbug.com/366309453): Should round to 1.9998779296892903. - EXPECT_EQ(1.9998779296800002, StringToDouble("1.99987792968929034")); + EXPECT_EQ(1.9998779296892903, StringToDouble("1.99987792968929034")); } TEST(fxstring, WideStringToDouble) { @@ -208,8 +202,7 @@ EXPECT_DOUBLE_EQ(0.25, StringToDouble(L"+0.25")); - // TODO(crbug.com/367395351): Should be 1.2e34. - EXPECT_DOUBLE_EQ(1.2034, StringToDouble(L"1.2e34")); + EXPECT_DOUBLE_EQ(1.2e34, StringToDouble(L"1.2e34")); EXPECT_DOUBLE_EQ( std::numeric_limits<double>::infinity(), @@ -232,8 +225,7 @@ // Test the exact double value. Use EXPECT_EQ, which does an exact comparison, // instead of EXPECT_DOUBLE_EQ, which allows slight precision error. - // TODO(crbug.com/366309453): Should round to 1.9998779296892903. - EXPECT_EQ(1.9998779296800002, StringToDouble(L"1.99987792968929034")); + EXPECT_EQ(1.9998779296892903, StringToDouble(L"1.99987792968929034")); } TEST(fxstring, SplitByteString) {
diff --git a/fpdfsdk/fpdf_annot_embeddertest.cpp b/fpdfsdk/fpdf_annot_embeddertest.cpp index 7a36b97..9244a04 100644 --- a/fpdfsdk/fpdf_annot_embeddertest.cpp +++ b/fpdfsdk/fpdf_annot_embeddertest.cpp
@@ -496,8 +496,8 @@ ASSERT_TRUE(FPDFAnnot_GetAttachmentPoints(annot.get(), 0, &quadpoints)); EXPECT_EQ(115.802643f, quadpoints.x1); EXPECT_EQ(718.913940f, quadpoints.y1); - EXPECT_EQ(157.211182f, quadpoints.x4); - EXPECT_EQ(706.264465f, quadpoints.y4); + EXPECT_EQ(157.211166f, quadpoints.x4); + EXPECT_EQ(706.264404f, quadpoints.y4); } UnloadPageNoEvents(page); } @@ -537,23 +537,23 @@ // Note that upon rendering, the rectangle coordinates will be adjusted. FS_RECTF rect; ASSERT_TRUE(FPDFAnnot_GetRect(annot.get(), &rect)); - EXPECT_EQ(351.820404f, rect.left); - EXPECT_EQ(583.830688f, rect.bottom); - EXPECT_EQ(475.336090f, rect.right); + EXPECT_EQ(351.820435f, rect.left); + EXPECT_EQ(583.830750f, rect.bottom); + EXPECT_EQ(475.336121f, rect.right); EXPECT_EQ(681.535034f, rect.top); } { const char* expected_hash = []() { if (CFX_DefaultRenderDevice::UseSkiaRenderer()) { #if BUILDFLAG(IS_WIN) - return "b4698da8e2f9e8cb82b7bbb6e7d559a9"; + return "42e03089ef2392579d73bf9065896488"; #elif BUILDFLAG(IS_APPLE) - return "e3da57011a3d66238d15be1bedcb6696"; + return "5891aa346046c3f5b8c3cd8607f0d256"; #else - return "c2404a7a9a86ee78487cd1993949c56d"; + return "d02d468d9022ddf35014daa50191a895"; #endif } - return "354002e1c4386d38fdde29ef8d61074a"; + return "738a3881cb2cfb3e69e2a3adbc7c1d5b"; }(); ScopedFPDFBitmap bitmap = RenderLoadedPageWithFlags(page, FPDF_ANNOT); CompareBitmap(bitmap.get(), 612, 792, expected_hash); @@ -750,8 +750,8 @@ ASSERT_TRUE(FPDFAnnot_GetAttachmentPoints(annot.get(), 0, &quadpoints)); EXPECT_EQ(115.802643f, quadpoints.x1); EXPECT_EQ(718.913940f, quadpoints.y1); - EXPECT_EQ(157.211182f, quadpoints.x4); - EXPECT_EQ(706.264465f, quadpoints.y4); + EXPECT_EQ(157.211166f, quadpoints.x4); + EXPECT_EQ(706.264404f, quadpoints.y4); } // Add an underline annotation to the page and set its quadpoints. @@ -926,11 +926,11 @@ const char* md5_modified_square = []() { if (CFX_DefaultRenderDevice::UseSkiaRenderer()) { #if BUILDFLAG(IS_WIN) - return "cebb3bd3209f63f6dfd15b8425229e90"; + return "25bb74224a3519a397a8b987069085a5"; #elif BUILDFLAG(IS_APPLE) - return "613102f8b6d74d6d9f95c8eacd17b756"; + return "8b9df3824179d3757932bda23b95c8ce"; #else - return "879c77a2cb9f79ba65ffe0bbdd720ce3"; + return "4f66924b2d246f9e8a1b926e956b615b"; #endif } #if BUILDFLAG(IS_APPLE) @@ -1130,49 +1130,49 @@ const char* md5_modified_path = []() { if (CFX_DefaultRenderDevice::UseSkiaRenderer()) { #if BUILDFLAG(IS_WIN) - return "c8ae5b9ebd9982d9fde526f50f936971"; + return "02c0628d5e1da4d0f2d481272c7e5a9b"; #elif BUILDFLAG(IS_APPLE) - return "3adf48360ca55e8794a9fc9f1ea87df1"; + return "c81ee833f81ae0fa674e0c16872156d2"; #else - return "94f7f4568385c16498604ddc46f18be9"; + return "4a3a53f2b1b0cb40e9a32305eef9197a"; #endif } #if BUILDFLAG(IS_APPLE) - return "34614087e04b729b7b8c37739dcf9af9"; + return "ac6a1526c71bb0cebe3c3c0b6bf59aab"; #else - return "31a94d22460171cd83169daf6a6956ee"; + return "fb9e6f707986e5daf2f7bb75b4ed28ec"; #endif }(); const char* md5_two_paths = []() { if (CFX_DefaultRenderDevice::UseSkiaRenderer()) { #if BUILDFLAG(IS_WIN) - return "d29d4258bd9344abf20bb55e6679c065"; + return "cf7119f478a5daf7fa7c707514f39e13"; #elif BUILDFLAG(IS_APPLE) - return "5f7d44d3a4ffaadb6bf20b4f1ac2a1f0"; + return "c3ce00fda0bcaad52536b49991a24aba"; #else - return "1052cd0fe1c3e73865fc842525245551"; + return "db4c609adaa0dcfba213450bbd62264e"; #endif } #if BUILDFLAG(IS_APPLE) - return "6cdaf6b3e5145f435d8ccae6db5cf9af"; + return "48a03185099a335f60b158ade04ff22c"; #else - return "ed49fefef45f14121f8150cde10006c4"; + return "1abd24eb0ec89cd429ea7080d9762713"; #endif }(); const char* md5_new_annot = []() { if (CFX_DefaultRenderDevice::UseSkiaRenderer()) { #if BUILDFLAG(IS_WIN) - return "9ca0a274d1ae0db09ad814ee455dd88c"; + return "df816a3ea0b92e597fa04e8a0a80e5a7"; #elif BUILDFLAG(IS_APPLE) - return "71c8fb8eee9720c19851c48745dde152"; + return "75f8d0866cda9bc7545a9c1162841aad"; #else - return "f522e1262f487cc1976bb3fc585ef469"; + return "d4d1b116d5f23dfec894e25db4c5ebdb"; #endif } #if BUILDFLAG(IS_APPLE) - return "e6015f42eb81ed6003224cb2f27dcb51"; + return "eae62b0038343c77141eedea842f01eb"; #else - return "2e567a33390cd2ebad9dc33d82a8b054"; + return "897415260f33a8b553c85466ffcf4a56"; #endif }(); @@ -1373,33 +1373,33 @@ const char* md5_new_image = []() { if (CFX_DefaultRenderDevice::UseSkiaRenderer()) { #if BUILDFLAG(IS_WIN) - return "3515dee02973f010516e4c6c774ee281"; + return "795cf0ce02f6f2d3a23ed06a148af82f"; #elif BUILDFLAG(IS_APPLE) - return "f740480598ff3732fb31871634509eec"; + return "617f9f6f00167f83e9ffb31751624a9e"; #else - return "77bf1781c60370bfcd8d81cf91ab7b09"; + return "5526f05092a0253d56a0e79e0e104f71"; #endif } #if BUILDFLAG(IS_APPLE) - return "17ac49518eabbb6a7632a547269c40a3"; + return "4c63afd81a7835579485f056e2d5f951"; #else - return "e79446398d4508bc2cb47e6cf2a677ed"; + return "727380057983d1ce10c7f51cbcd0917f"; #endif }(); const char* md5_modified_image = []() { if (CFX_DefaultRenderDevice::UseSkiaRenderer()) { #if BUILDFLAG(IS_WIN) - return "aeb7cfb0bf6ac2bcdef4412276f3bad4"; + return "7c33121197cf13a83b96e913d70fe12d"; #elif BUILDFLAG(IS_APPLE) - return "5beae8949ee6b5c99fe17475e90aea02"; + return "0bd1b3bbefa3bae4199ce9c8b5bf840b"; #else - return "cfa8aa132250a1c0fec505bd13c15916"; + return "e3f115b37181ce0ffd02c7b5288ea99a"; #endif } #if BUILDFLAG(IS_APPLE) - return "25bf5ec7c197cf9ff3d12b41fc336b25"; + return "5d242652769254acd9a1f91311ff6b65"; #else - return "dcb492d8e32528dd81bb60fa5bc900f8"; + return "f0d4f77fee46e77f79edae2d93d574a3"; #endif }(); @@ -1481,37 +1481,37 @@ const char* md5_new_text = []() { if (CFX_DefaultRenderDevice::UseSkiaRenderer()) { #if BUILDFLAG(IS_WIN) - return "9fbad802120d58b2b8b7edd043eeaf55"; + return "d9b4f92933bbde80a123048ae2ef7296"; #elif BUILDFLAG(IS_APPLE) - return "eefdf26393df536e7f125816e7d967ff"; + return "f63c9d35c6c19f88ffb92471e97b7e22"; #else - return "f89c413c7155ae9b4a0b7c8e4013613e"; + return "6b1cfec7e9c89da93dc14172afffc5db"; #endif } #if BUILDFLAG(IS_APPLE) && defined(ARCH_CPU_ARM64) return "8eabf79dcdcfc6474c593bc60d996def"; #elif BUILDFLAG(IS_APPLE) && !defined(ARCH_CPU_ARM64) - return "5d449d36926c9f212c6cdb6c276d18cc"; + return "8cfa6f61f5a03b3f2306d0924ef6c000"; #else - return "a9532f555aca2fd099e2107fa40b61e6"; + return "c9b2be9f9bcb8998ee181f149a979cb8"; #endif }(); const char* md5_modified_text = []() { if (CFX_DefaultRenderDevice::UseSkiaRenderer()) { #if BUILDFLAG(IS_WIN) - return "850564e273ad58f651af09d880103e82"; + return "a393718c0bc2144131e3c60b51cd985c"; #elif BUILDFLAG(IS_APPLE) - return "25c03a641c8a7cac9845f8d38e54f90b"; + return "76b7f0cb6f0e52aa25a2c1e11c9abd62"; #else - return "707320c806ed846c73ca2be8b2328bcd"; + return "007960dd422d0999f71a9de0faa29b07"; #endif } #if BUILDFLAG(IS_APPLE) && defined(ARCH_CPU_ARM64) return "704f3eb56f82377753a816a43de250ea"; #elif BUILDFLAG(IS_APPLE) && !defined(ARCH_CPU_ARM64) - return "8c992808db99dbe3d74006358a671f05"; + return "c39124df1815dd6fce3b2f113169c8c9"; #else - return "03cae68322d6a6ba120e738ab325408c"; + return "c08913614721f4337ff893c3cf53026d"; #endif }(); @@ -1642,17 +1642,17 @@ const char* md5 = []() { if (CFX_DefaultRenderDevice::UseSkiaRenderer()) { #if BUILDFLAG(IS_WIN) - return "25b2a610cab9d656b9ab5f72746c9e2e"; + return "d0dfc003b3e08160e698355b599f7eb8"; #elif BUILDFLAG(IS_APPLE) - return "0f6501f8e22441630bdd535363c93e59"; + return "8774ac1779ea66056860290ae7df8f44"; #else - return "1814140b1a9a9776546af7894e21d17f"; + return "8b8618de537ec6aee1f3fc53fedfbcfc"; #endif } #if BUILDFLAG(IS_APPLE) - return "0521eaa52fe2aa43aafd3e4495f63f0b"; + return "587311ad93447614cbe5887df14caa78"; #else - return "5f19ddad9d48f5b7b87ee7d92f577db6"; + return "2908fd6166f795dfd73c607ec12c5356"; #endif }();
diff --git a/fpdfsdk/fpdf_edit_embeddertest.cpp b/fpdfsdk/fpdf_edit_embeddertest.cpp index 8cae5c3..57680a1 100644 --- a/fpdfsdk/fpdf_edit_embeddertest.cpp +++ b/fpdfsdk/fpdf_edit_embeddertest.cpp
@@ -614,9 +614,9 @@ { const char* last_checksum = []() { if (CFX_DefaultRenderDevice::UseSkiaRenderer()) { - return "423b20c18c177e78c93d8b67594e49f1"; + return "ed14c60702b1489c597c7d46ece7f86d"; } - return "111c38e9bf9e2ba0a57b875cca596fff"; + return "9823e1a21bd9b72b6a442ba4f12af946"; }(); VerifySavedDocument(612, 792, last_checksum); } @@ -1448,7 +1448,7 @@ #ifdef ARCH_CPU_ARM64 return "401858d37db450bfd3f9458ac490eb08"; #else - return "966579fb98206858ce2f0a1f94a74d05"; + return "6275396f29951f92f8f5e145f0eff03a"; #endif // ARCH_CPU_ARM64 #else return "3d5a3de53d5866044c2b6bf339742c97"; @@ -1505,7 +1505,7 @@ #ifdef ARCH_CPU_ARM64 return "6a1e31ffe451997946e449250b97d5b2"; #else - return "6e19a4dd674b522cd39cf41956559bd6"; + return "631be723d5ff1f36e75c971cc940351b"; #endif // ARCH_CPU_ARM64 #else return "bc8623c052f12376c3d8dd09a6cd27df"; @@ -1525,7 +1525,7 @@ #ifdef ARCH_CPU_ARM64 return "d250bee3658c74e5d74729a09cbd80cd"; #else - return "3cb35c681f8fb5a43a49146ac7caa818"; + return "631be723d5ff1f36e75c971cc940351b"; #endif // ARCH_CPU_ARM64 #else return "bc8623c052f12376c3d8dd09a6cd27df"; @@ -1975,7 +1975,7 @@ #if ARCH_CPU_ARM64 return "a47297bbcfa01e27891eeb52375b6f9e"; #else - return "3cdc75af44c15bed80998facd6e674c9"; + return "1c1d478b59e3e63813f0f56124564f48"; #endif // ARCH_CPU_ARM64 #else return "b474826df1acedb05c7b82e1e49e64a6";
diff --git a/fpdfsdk/fpdf_save_embeddertest.cpp b/fpdfsdk/fpdf_save_embeddertest.cpp index e3d8947..16dc4ae 100644 --- a/fpdfsdk/fpdf_save_embeddertest.cpp +++ b/fpdfsdk/fpdf_save_embeddertest.cpp
@@ -152,7 +152,7 @@ EXPECT_THAT(GetString(), HasSubstr("36 0 obj")); EXPECT_THAT(GetString(), Not(HasSubstr("37 0 obj"))); EXPECT_THAT(GetString(), Not(HasSubstr("38 0 obj"))); - EXPECT_EQ(7996u, GetString().size()); + EXPECT_EQ(7986u, GetString().size()); // Make sure new document renders the same as the old one. ASSERT_TRUE(OpenSavedDocument());
diff --git a/testing/embedder_test_constants.cpp b/testing/embedder_test_constants.cpp index 551710d..f0279ae 100644 --- a/testing/embedder_test_constants.cpp +++ b/testing/embedder_test_constants.cpp
@@ -12,17 +12,17 @@ const char* AnnotationStampWithApChecksum() { if (CFX_DefaultRenderDevice::UseSkiaRenderer()) { #if BUILDFLAG(IS_WIN) - return "25b2a610cab9d656b9ab5f72746c9e2e"; + return "d0dfc003b3e08160e698355b599f7eb8"; #elif BUILDFLAG(IS_APPLE) - return "0f6501f8e22441630bdd535363c93e59"; + return "8774ac1779ea66056860290ae7df8f44"; #else - return "1814140b1a9a9776546af7894e21d17f"; + return "8b8618de537ec6aee1f3fc53fedfbcfc"; #endif } #if BUILDFLAG(IS_APPLE) - return "0521eaa52fe2aa43aafd3e4495f63f0b"; + return "587311ad93447614cbe5887df14caa78"; #else - return "5f19ddad9d48f5b7b87ee7d92f577db6"; + return "2908fd6166f795dfd73c607ec12c5356"; #endif }
diff --git a/testing/resources/pixel/bug_1330_expected.pdf.0.png b/testing/resources/pixel/bug_1330_expected.pdf.0.png index 134f8bb..79f011a 100644 --- a/testing/resources/pixel/bug_1330_expected.pdf.0.png +++ b/testing/resources/pixel/bug_1330_expected.pdf.0.png Binary files differ
diff --git a/testing/resources/pixel/bug_736695_1_expected.pdf.0.png b/testing/resources/pixel/bug_736695_1_expected.pdf.0.png index 10bbb0d..4673ede 100644 --- a/testing/resources/pixel/bug_736695_1_expected.pdf.0.png +++ b/testing/resources/pixel/bug_736695_1_expected.pdf.0.png Binary files differ
diff --git a/testing/resources/pixel/bug_736695_1_expected_skia.pdf.0.png b/testing/resources/pixel/bug_736695_1_expected_skia.pdf.0.png index aa030a1..2850e96 100644 --- a/testing/resources/pixel/bug_736695_1_expected_skia.pdf.0.png +++ b/testing/resources/pixel/bug_736695_1_expected_skia.pdf.0.png Binary files differ
diff --git a/testing/resources/pixel/bug_736695_4_expected.pdf.0.png b/testing/resources/pixel/bug_736695_4_expected.pdf.0.png index 10bbb0d..4673ede 100644 --- a/testing/resources/pixel/bug_736695_4_expected.pdf.0.png +++ b/testing/resources/pixel/bug_736695_4_expected.pdf.0.png Binary files differ
diff --git a/testing/resources/pixel/bug_736695_4_expected_skia.pdf.0.png b/testing/resources/pixel/bug_736695_4_expected_skia.pdf.0.png index aa030a1..2850e96 100644 --- a/testing/resources/pixel/bug_736695_4_expected_skia.pdf.0.png +++ b/testing/resources/pixel/bug_736695_4_expected_skia.pdf.0.png Binary files differ
diff --git a/testing/resources/pixel/radial_shading_point_at_center_expected.pdf.0.png b/testing/resources/pixel/radial_shading_point_at_center_expected.pdf.0.png index c69c190..f7a6300 100644 --- a/testing/resources/pixel/radial_shading_point_at_center_expected.pdf.0.png +++ b/testing/resources/pixel/radial_shading_point_at_center_expected.pdf.0.png Binary files differ
diff --git a/testing/resources/pixel/radial_shading_point_at_center_expected_skia.pdf.0.png b/testing/resources/pixel/radial_shading_point_at_center_expected_skia.pdf.0.png index 756ddb8..dbc4031 100644 --- a/testing/resources/pixel/radial_shading_point_at_center_expected_skia.pdf.0.png +++ b/testing/resources/pixel/radial_shading_point_at_center_expected_skia.pdf.0.png Binary files differ