SIGN IN SIGN UP

Protocol Buffers - Google's data interchange format

0 0 35 C++

Made a common longjmp()-handling layer, which can optionally be used on `upb_EpsCopyInputStream`.

`upb_EpsCopyInputStream` and `upb_WireReader` can now report all errors via `longjmp()` when an error handler is installed.

This lets us unwind some complexity:

* The decoder can now just use `upb_WireReader_Read*()`, instead of having a separate copy of those functions solely so that errors can `longjmp()`.
* `upb_EpsCopyInputStream` no longer needs to support a custom callback for `IsDoneFallback`, which existed solely so that errors could `longjmp()`.  This allows us to move `upb_EpsCopyInputStream_IsDoneFallback()` out of the header and into the source file, where fallback functions belong.

In future CLs we can apply the same pattern to `upb_Arena` so that allocation failures will `longjmp()`.

PiperOrigin-RevId: 843422118
J
Joshua Haberman committed
be01da55acd7cf1c2604eea480c7239eb9fda27a
Parent: 831bb2c
Committed by Copybara-Service <copybara-worker@google.com> on 12/12/2025, 12:38:10 AM