Repository navigation
Sync S17: merge upstream PDFium up to 6688c576f (Nov 6 2026) - #116
Merged
Merged
Conversation
Add a test verifying that re-entrant calculate script execution preserves the outer script's node array. Ensure dependencies referenced after nested calculations trigger recalculations upon modification. Follow-up to https://pdfium-review.googlesource.com/c/162130 Change-Id: I1d557383957c023a9acb3347e807a0dd05f7c98c Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/162150 Reviewed-by: Lei Zhang <thestig@chromium.org> Commit-Queue: Tom Sepez <tsepez@chromium.org>
https://chromium.googlesource.com/chromium/src/third_party/freetype2.git/+log/891f904e2e7b..25167984d243 Created with: roll-dep third_party/freetype/src Change-Id: I1ddea28e185ddae8c8479147d10f38212810765b Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/163070 Reviewed-by: Andy Phan <andyphan@chromium.org> Commit-Queue: Andy Phan <andyphan@chromium.org> Auto-Submit: Lei Zhang <thestig@chromium.org>
https://chromium.googlesource.com/external/github.com/llvm/llvm-project/libunwind.git/+log/eb1ca4993b53..9e44ea2ff4f5 Created with: roll-dep third_party/libunwind/src Change-Id: Ib857b3344d0a4bbae2ff6a83c6d9924164345075 Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/163031 Reviewed-by: Andy Phan <andyphan@chromium.org> Auto-Submit: Lei Zhang <thestig@chromium.org> Commit-Queue: Andy Phan <andyphan@chromium.org>
https://chromium.googlesource.com/external/github.com/llvm/llvm-project/libcxxabi.git/+log/09351f6ec00c..ce814c994055 Created with: roll-dep third_party/libc++abi/src Change-Id: I724c592d91baf287ceeb23f360a939387cad820e Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/163050 Reviewed-by: Andy Phan <andyphan@chromium.org> Commit-Queue: Andy Phan <andyphan@chromium.org> Auto-Submit: Lei Zhang <thestig@chromium.org>
Replace stack-local raw pointer collections and vectors of Persistent handles with GCed container wrappers (`GCedVector`, `GCedMap`, `GCedSet`) rooted via single `cppgc::Persistent<>` handles on the stack. Potentially avoids issues similiar to crbug.com/574304407. - In CopyContainer_SubformSet(): replace `subformArray`, `subformMapArray`, `nodeArray`, and `rgItemUnmatchList` - In CXFA_FFDocView::RunSubformIndexChange(): replace `seen`. - In CXFA_Node::ExecuteScript() and CFXJSE_Engine: replace the vector of individual Persistent handles with `GCedVector<CXFA_Node>`. Change-Id: I9a63cea03b22751e66533a1fa67c53162296f42a Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/162050 Commit-Queue: Tom Sepez <tsepez@chromium.org> Reviewed-by: Lei Zhang <thestig@chromium.org>
To make the new version of GN work, import //build/strict_deps_failures.gni to allow for check_includes_strict_exceptions. Change-Id: I6023faf2684da872062d5bd5bfa15036a7fa3d0e Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/163092 Commit-Queue: Lei Zhang <thestig@chromium.org> Reviewed-by: Tom Sepez <tsepez@chromium.org>
Introduce unit tests for leaf-node codecs in core/fxcodec: - Add FaxModuleTest covering FaxModule::CreateDecoder boundary checks, Group 3 1-D decoding, BlackIs1 inverted buffers, Group 4 decoding, and FaxModule::FaxG4Decode. - Add IccTransformTest covering component validation, invalid profile handling, sRGB and Gray transforms, TranslateScanline, and Lab profile creation. - Add FlateModule.LZWDecode testing LZW stream decoding via FlateModule::FlateOrLZWDecode. - Add RLELeftoverCharacter and RLEScanlineDecoder testing trailing single-character run handling and scanline decoding offsets in BasicModule. AI-generated tests based upon analysis of x20 coverage data. Change-Id: I67320f04b397cb1ed907d8250c6dc238a957dd98 Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/163090 Commit-Queue: Tom Sepez <tsepez@chromium.org> Reviewed-by: Andy Phan <andyphan@chromium.org>
Change-Id: I5bd21a1e8506d412ce112b5530b1fcfa439550ab Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/163093 Commit-Queue: Andy Phan <andyphan@chromium.org> Auto-Submit: Lei Zhang <thestig@chromium.org> Reviewed-by: Andy Phan <andyphan@chromium.org>
Hold individual cppgc::Persistent<CXFA_Event> elements inside a standard vector. This avoids GC-heap allocations while still rooting each event across script execution in CXFA_Node::ProcessEvent(). Also rename GetEventByActivity() to GetEventsByActivity() to reflect returning a collection, and skip any events detached from the node during iteration. Fixed: 575091549 Change-Id: Ia42d22b237f497bd50da3aaad516c8e783346d64 Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/163151 Commit-Queue: Tom Sepez <tsepez@chromium.org> Reviewed-by: Lei Zhang <thestig@chromium.org>
Add an extra no-op branch, like in Chromium's skia/BUILD.gn. Change-Id: I73b2031367328667efce0c65816d82040b15f913 Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/163190 Commit-Queue: Lei Zhang <thestig@chromium.org> Reviewed-by: Tom Sepez <tsepez@chromium.org>
Define the FxDataPartitionType concept to de-duplicate type requirements across FxPartitionAllocAllocator, FxAllocAllocator, DataVector, and FixedSizeDataVector. Change-Id: I1b8474838a47d9643614622f9b3e49ebf9d91ee1 Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/163230 Reviewed-by: Lei Zhang <thestig@chromium.org> Commit-Queue: Tom Sepez <tsepez@chromium.org>
Traverse CPDF_Document::GetRoot() in addition to the trailer in ObjectTreeTraverser. The document root catalog can diverge from the trailer's /Root entry (such as after cross-reference rebuilds), which could otherwise cause objects reachable only from the catalog to be missed. Fixed: 581323820 Change-Id: Ic8f8292b61ba7c98ca82a5543e6e3b28b6d15e36 Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/163094 Commit-Queue: Tom Sepez <tsepez@chromium.org> Reviewed-by: Andy Phan <andyphan@chromium.org>
CJS_Runtime::~CJS_Runtime() guards against the runtime being destroyed while a blocking call-out (app.alert(), app.response(), ...) is still on the stack with CHECK(!IsBlocking()). Nested blocking call-outs (for example, /AA /WC WillClose JavaScript executed during teardown that calls app.beep()) previously caused the inner EndBlock() call to reset the blocking state, allowing the runtime to be destroyed prematurely and leading to use-after-free conditions. Replace BeginBlock() and EndBlock() with a CJS_Runtime::BlockingScope class backed by AutoRestorer<bool>. This restores the prior blocking state upon leaving each scope, ensuring outer blocking states remain active until the outermost call completes. Fixed: 581296829 Change-Id: If91c82a4cedba263bdf77d6fa6ce6c3e07324c5e Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/163150 Reviewed-by: Andy Phan <andyphan@chromium.org> Commit-Queue: Tom Sepez <tsepez@chromium.org>
Allow types to opt into FxDataPartitionType by declaring an in-class static constexpr bool IsDataPartitionSafe. This is easier to use with class templates. -- Opt in template FX_LAB_STRUCT<T> for arithmetic types T. Change-Id: I50652e55abce24694e7ce0ddad3be757834c5f06 Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/163250 Commit-Queue: Tom Sepez <tsepez@chromium.org> Reviewed-by: Lei Zhang <thestig@chromium.org>
Migrate all internal structs to the kIsDataPartitionSafe mechanism. Rename to macro to FX_EXTERNAL_DATA_PARTITION_SAFE to provide an escape hatch for third-party types. -- Test with an incomplete forward-declared type. Change-Id: Ida14b7a8940c8afd6503d1acbfaf61985fa90901 Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/163251 Reviewed-by: Lei Zhang <thestig@chromium.org> Commit-Queue: Tom Sepez <tsepez@chromium.org>
This CL fixes a build error of pdfium on riscv64. Use Rebind<uint8_t, D32> so the store descriptor matches the fractional-LMUL vector returned by U8FromU32 on RVV. Bug: 559426535 Change-Id: I6b067bc8d56b4212ed8291d49f9ce2fb0a8a73c9 Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/161950 Commit-Queue: Lei Zhang <thestig@chromium.org> Reviewed-by: Lei Zhang <thestig@chromium.org> Reviewed-by: Andy Phan <andyphan@chromium.org>
AlertIfPossible() calls the embedder's JS_appAlert() without entering a blocking scope. In Chrome, the alert forces a style and layout update which can destroy the PDF plug-in and CJS_Runtime. Because blocking_ was not set, the CHECK(!IsBlocking()) guard in ~CJS_Runtime() did not fire, allowing the runtime to be freed while script frames remain. Fixed: 580846556 Change-Id: I974fa5124419fd6a702c26caf22b1c6dbd298d36 Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/163095 Reviewed-by: Andy Phan <andyphan@chromium.org> Commit-Queue: Tom Sepez <tsepez@chromium.org>
Add FixedSizeDataVector::release() to transfer ownership of the underlying allocation to the caller and reset the vector to be empty. Use FixedSizeDataVector<uint8_t> in CreateSkiaImageFrom24BppDib() and CreateSkiaImageFromTransformedDib() instead of manually allocating raw buffers with FX_TryAlloc() and constructing an UNSAFE_BUFFERS() span. Along the way, avoid unnecessary buffer zeroing and buffer size variables. Also add comments to better explain memory management. This CL is AI generated. Change-Id: Iad60969662116270d3e11b987402c6debc5a8a4b Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/163270 Reviewed-by: Tom Sepez <tsepez@chromium.org> Commit-Queue: Lei Zhang <thestig@chromium.org>
All callers of CFX_DIBBase::ConvertBuffer() pass 0 for `src_left` and `src_top`: - CFX_DIBBase::ConvertTo() and CFX_DIBitmap::ConvertFormat() pass 0 directly. - CFX_DIBitmap::TransferWithUnequalFormats() is only called from CFX_DIBitmap::TransferBitmap() after CFX_DIBBase::GetOverlapRect(), where every caller with unequal formats passes non-positive offsets that GetOverlapRect() shifts into `dest_left` and `dest_top`, leaving `src_left` and `src_top` at 0. Check that `src_left` and `src_top` are 0 in CFX_DIBitmap::TransferBitmap() before calling TransferWithUnequalFormats(), and remove `src_left` and `src_top` from TransferWithUnequalFormats(), CFX_DIBBase::ConvertBuffer(), and all ConvertBuffer_*() helpers. This also fixes ConvertBuffer_RgbToArgbPremul() and ConvertBuffer_32bppRgbToRgb24() passing a single-scanline span to multi-row libyuv calls by using CFX_DIBBase::GetBuffer() directly. This CL is AI generated. Change-Id: I468478e73b6010aa630d03cbfc34a635b279b1ee Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/163351 Reviewed-by: Tom Sepez <tsepez@chromium.org> Commit-Queue: Lei Zhang <thestig@chromium.org>
CPDFSDK_FormFillEnvironment::JS_appAlert(), JS_appResponse(), and JS_appBeep() invoke embedder callbacks via IPDF_JSPLATFORM without setting in_active_ffi_callback_. In Chrome, embedder dialogs (such as alert, confirm, and prompt) force a style and layout update before opening. When the plugin element has been detached or hidden, that update can run synchronously while an XFA script remains. Fixed: 580848937 Change-Id: Ie95b280942bb21003c4d9f43cbf33d915d04fad8 Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/163350 Reviewed-by: Lei Zhang <thestig@chromium.org> Commit-Queue: Tom Sepez <tsepez@chromium.org>
Change `output` in CreateSkiaImageFromTransformedDib() from FixedSizeDataVector<uint8_t> to FixedSizeDataVector<Result>. Index into its span by `column` and advance `output_span` by `width` on each row instead of incrementing a raw `output_cursor` pointer inside an UNSAFE_TODO() block. Also remove the redundant `line` variable and promote the row byte and pitch assertions to CHECKs. This CL is AI generated. Change-Id: I90dfd08e55eb69488a928184a6e0d114128c6bc2 Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/163290 Reviewed-by: Tom Sepez <tsepez@chromium.org> Commit-Queue: Lei Zhang <thestig@chromium.org>
- Check CFX_DIBBase::GetBuffer() directly instead of calling CFX_DIBBase::RealizeIfNeeded(). When a DIB is not backed by a contiguous buffer, fall back to the scanline loop instead of allocating and copying into an intermediate CFX_DIBitmap. This also allows reverting `defined(PDF_USE_LIBYUV)` from the RealizeIfNeeded() guards. - Use libyuv::RotatePlane() for 1-byte-per-pixel bitmaps to match libyuv::ARGBRotate() and avoid passing a single-scanline span with a negative stride to the deprecated libyuv::RotatePlane270() function. This CL is AI generated. Change-Id: If83bd73ee0023794ab1f0c3962817ad5918ac116 Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/163352 Reviewed-by: Tom Sepez <tsepez@chromium.org> Commit-Queue: Lei Zhang <thestig@chromium.org>
Validate that re-parsing a JPEG header upon rewind preserves the dimensions, component count, downscale denominator, and color order established during decoder initialization. Rejecting altered headers prevents desynchronization between libjpeg decompressed rows and the pre-allocated scanline buffer. Additionally, verify that libjpeg's reported output width and row byte requirement do not exceed the scanline buffer allocation, destroying the decompressor and aborting decode cleanly on failure. Add unit tests covering dimension, component count, and header corruption upon decoder rewind. Fixed: 580846890 Change-Id: I687635a3841d4d4dfa48763c37057cba191afdb8 Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/163170 Commit-Queue: Tom Sepez <tsepez@chromium.org> Reviewed-by: Lei Zhang <thestig@chromium.org>
- Test CFGAS_Decimal integer conversion, string parsing with whitespace and sign prefixes, scale modifications with rounding, negation, float and double conversion, multiplication, and division. - Test FX_DateFromCanonical and FX_TimeFromCanonical parsing and validation edge cases. - Test CFGAS_StringFormatter date, time, and datetime subcategory formatting (e.g. short, medium, long, full). - Test CFGAS_StringFormatter time parsing with meridiem and timezone specifiers. - Test CFGAS_StringFormatter numeric formatting and parsing edge cases including negative integer formatting, overflow digit handling, and literal string escapes. - Test null and zero formatting and parsing with quoted literals and unquoted strings. - Test text formatting and parsing character validation. Change-Id: I0c44a22a582f405c4e8b557c284787b7cb0c7a98 Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/163430 Commit-Queue: Tom Sepez <tsepez@chromium.org> Reviewed-by: Lei Zhang <thestig@chromium.org>
Add unit tests to improve code coverage across fxge modules: - cfx_color: Add test coverage for ConvertColorType() covering conversions among Transparent, Gray, RGB, CMYK, and out-of-range inputs. - fx_freetype: Add unit tests for FXFT_unicode_from_adobe_name(), FXFT_adobe_name_from_unicode(), and FreeTypeVersionSupportsHinting() guarded under pdf_enable_freetype. - cfx_cttnametable: Add unit tests for standalone TrueType name table parsing guarded under pdf_enable_xfa. Change-Id: I563ee66d2ba9973fc53ea695d151515207f4c946 Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/163110 Reviewed-by: Lei Zhang <thestig@chromium.org> Commit-Queue: Tom Sepez <tsepez@chromium.org>
- Use pow() instead of powf() in CFGAS_Decimal::ToDouble() to avoid truncating double precision down to single-precision float mantissa. Also remove the C-style cast when scaling 32-bit limbs. - Fix transposed pattern arguments in CFGAS_StringFormatter::ParseDateTime() for DateTimeType::kDateTime, where wsTimePattern was passed to ParseLocaleDate() and wsDatePattern was passed to ParseLocaleTime(). - Allow ParseLocaleDate() to leave unconsumed characters for subsequent time parsing in combined date-time strings, and check that the full input string was consumed upon completing ParseDateTime(). - Update test expectations to verify the corrected behaviors. Change-Id: I89a5265fb9d7e91e9dd3c8a3386b1dc995294ac7 Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/163450 Reviewed-by: Lei Zhang <thestig@chromium.org> Commit-Queue: Tom Sepez <tsepez@chromium.org>
In production code, division on CFGAS_Decimal is only ever performed to divide by 10 and 100 in CFGAS_StringFormatter. Replace the arbitrary division operator with dedicated DivBy10() and DivBy100() methods. Remove the 1,024-bit binary search multi-limb division helpers and associated unused array routines from cfgas_decimal.cpp. Improve CFGAS_Decimal::ToDouble() precision by using static_cast for the 2^32 factor and double-precision pow(), resolving precision truncation on fractional values. Update tests accordingly. AI-generated patch. Change-Id: I0f805fc4efafeb962ddeae7a16db9a919e1eae9e Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/163431 Reviewed-by: Lei Zhang <thestig@chromium.org> Commit-Queue: Tom Sepez <tsepez@chromium.org>
CreateTransformSRGB() previously configured srcFormat for Lab profiles with BYTES_SH(0) and no FLOAT_SH(1), which caused cmsCreateTransform() to reject the format. Configure Lab profiles using TYPE_Lab_FLT (FLOAT_SH(1) and BYTES_SH(4)). Update Translate() to feed float inputs to cmsDoTransform(). Update TranslateScanline() to handle Lab profiles by decoding 8-bit PDF Lab samples to float inputs via a new FX_DecodeLab() helper in core/fxge/dib/fx_dib.h. LittleCMS has no native input format for PDF 8-bit Lab encoding (TYPE_LabV2_8 expects legacy ICC v2 integer encoding, which distorts neutral gray and scales L*=100 to 100.392). Deduplicate this decode logic with CPDF_LabCS::TranslateImageLine(). Enforce input buffer sizes and component bounds using CHECK_GE() in both Translate() and TranslateScanline(), and verify transform format flags before delegating to cmsDoTransform(). Update IccTransformTest.LabProfile to verify successful transform creation as well as both float and scanline translation accuracy. Fixed: 567626895 Change-Id: Ie4aee8b595757ca83aa83e02f43a03c3fcd15b63 Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/163091 Commit-Queue: Tom Sepez <tsepez@chromium.org> Reviewed-by: Lei Zhang <thestig@chromium.org>
Read nPlatformID and nNameID directly from the 12-byte NameRecord span rather than incorrectly indexing the base table by header offset twice. This corrects a bug where nNameID was reading the platform ID, causing non-Macintosh (e.g. Windows UTF-16) font name records to be skipped. Also read both fields adjacently before validating nNameID == 1, tighten length and offset bounds checks, and add unit test coverage for Windows UTF-16 name table records. AI-generated patch from coverage data. Change-Id: I448f4a761a454191b2dfbbf9439acc1051d1e6b5 Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/163111 Reviewed-by: Lei Zhang <thestig@chromium.org> Commit-Queue: Tom Sepez <tsepez@chromium.org>
Add unit tests in core/fxcodec: - Add tests in progressive_decoder_unittest.cpp covering TIFF progressive decoding, verifying invalid data error handling and uncompressed 2x2 grayscale TIFF frame info and bitmap decoding. - Add tests in jpx_unittest.cpp covering YUV422 to RGB and YUV444 to RGB conversions in CJPX_Decoder. - Add tests in jpx_unittest.cpp for ColorSyccToRGB covering grayscale fallback on fewer than 3 components and SRGB conversion. Change-Id: I13ce51bb6211447b6513f1567d9c921371714f57 Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/163130 Commit-Queue: Tom Sepez <tsepez@chromium.org> Reviewed-by: Andy Phan <andyphan@chromium.org>
Add FXUnicodeTest.GetMirrorCharSupplementary to test pdfium::unicode::GetMirrorChar() with code points above U+FFFF. Bug: 555940408 Change-Id: I94a90de2875b0d1310581082f9b4dbcc38a0afc9 Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/163471 Reviewed-by: Tom Sepez <tsepez@chromium.org> Commit-Queue: Andy Phan <andyphan@chromium.org>
`kTextLayoutCodeProperties` only covers BMP code points (U+0000 to U+FFFF). For supplementary-plane characters (above U+FFFF), GetUnicodeProperties() fell back to returning 0, which GetMirrorChar() treated as mirror index 0 (`')'`) instead of no mirror. Have GetUnicodeProperties() return `std::optional<uint16_t>` so GetMirrorChar() returns `wch` unchanged and GetBidiClass() returns `BidiClass::kON` when a code point is out of range. Bug: 555940408 Change-Id: I5e80dd9ddda78ac45dc366f5cf07771affadab41 Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/163472 Reviewed-by: Tom Sepez <tsepez@chromium.org> Commit-Queue: Andy Phan <andyphan@chromium.org>
- fx_codepage: Add fx_codepage_unittest.cpp covering charset and codepage lookups, CJK character set checks, charset flags, and conversion functions. - cfx_memorystream: Add tests for IsEOF(), GetPosition(), Flush(), and boundary conditions in ReadBlockAtOffset(). - cfx_datetime: Add tests for FX_IsLeapYear(), FX_DaysInMonth(), GetDayOfWeek() across common and BCE dates, and accessors. - cfx_fileaccess_stream: Add cfx_fileaccess_stream_unittest.cpp Change-Id: Id78224f1d9064aa6e601d7e7ec4b2852402dabfe Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/163510 Commit-Queue: Tom Sepez <tsepez@chromium.org> Reviewed-by: Andy Phan <andyphan@chromium.org>
Test FPDF_AddInstalledFont in FPDFVersion1Versus2ComparisonTest by registering custom fonts (localized multi-byte names), during EnumFonts execution. Verify that PDFium queries the localized font name via GetFont and that page rendering succeeds. Change-Id: I92460806f3090837f73aced9bd0007f6e65d2c8b Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/163451 Reviewed-by: Andy Phan <andyphan@chromium.org> Commit-Queue: Tom Sepez <tsepez@chromium.org>
Release-gate sync: 34 upstream commits, 2b52a82 to 6688c57 (upstream's tip, more than a day old). Report: docs/embedpdf/syncs/2026-11-08-6688c576f.md. - The object-tree traversal also starts from the catalog; our resolve mode stays, and our callers are unaffected. - Upstream fixes: JPEG rewinds against altered headers, Windows font name records, Lab ICC profiles, mirrored supplementary-plane characters. - FreeType, libc++abi, libunwind, gn and siso rolls; all our patches still apply. - Two test files keep both sides' new tests. - Record the signature tests' current layer-mode object counts.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Release-gate sync: 34 upstream commits, 2b52a82 to 6688c57 (upstream's tip). Report:
docs/embedpdf/syncs/2026-11-08-6688c576f.md.1799c8d53). Our resolve mode stays (layer-save); our only callers are the page content generator's shared-object checks, and our save path doesn't use this traversal.4f93283fe), Windows UTF-16 font name records are read (3351236ec), Lab ICC profiles convert (30b2a20a5), supplementary-plane characters mirror (03ad8222f).Local checks (darwin-arm64): 1359 unit tests pass; embedder tests unchanged (the 12 known Mac golden failures); layer mode; tag, C API, globals and exports checks; every target's patches; wasm32 build.
If you run CI on this branch, let it finish before merging: merging deletes the branch, and build jobs that start afterwards fail at checkout. Merge with a merge commit, not squash.