Niels Lohmann
6a073dbae4
Give operator>> a strong exception-safety guarantee ( #5695 )
...
operator>> parsed directly into its basic_json& target, so a parse
error left the target holding whatever was parsed before the error
instead of its previous value. With JSON_DIAGNOSTICS=1, that partial
value also violated the class invariant, because the parent pointers
of an array or object's elements are only set when the container is
closed, which a failed parse never reaches; copying such a value then
aborted in assert_invariant().
Fix it the way basic_json::parse() already handles this: parse into a
temporary and move it into the target only once parsing succeeds, so
the target is left unchanged if an exception is thrown.
Fixes #5652 .
Signed-off-by: Niels Lohmann <mail@nlohmann.me >
2026-09-30 20:13:34 +02:00
..
2026-01-01 20:00:39 +01:00
2026-09-25 08:29:02 +02:00
2026-09-27 16:56:21 +02:00
2026-09-24 17:02:57 +02:00
2026-09-24 17:02:57 +02:00
2026-09-24 17:02:57 +02:00
2026-09-24 17:02:57 +02:00
2026-09-25 08:29:02 +02:00
2026-01-01 20:00:39 +01:00
2026-09-25 08:29:02 +02:00
2026-09-16 20:15:46 +02:00
2026-09-27 14:28:38 +02:00
2026-07-31 18:04:30 +02:00
2026-07-08 16:40:58 +02:00
2026-09-30 20:08:00 +02:00
2026-09-30 20:13:31 +02:00
2026-01-01 20:00:39 +01:00
2026-09-27 16:56:21 +02:00
2026-09-27 16:56:21 +02:00
2026-09-27 14:28:38 +02:00
2026-09-27 16:56:21 +02:00
2026-09-24 17:05:37 +02:00
2026-09-30 20:07:41 +02:00
2026-09-16 20:15:46 +02:00
2026-01-01 20:00:39 +01:00
2026-09-28 17:51:07 +02:00
2026-09-27 14:19:22 +02:00
2026-01-01 20:00:39 +01:00
2026-09-30 20:06:26 +02:00
2026-09-30 20:07:48 +02:00
2026-09-30 20:07:56 +02:00
2026-01-01 20:00:39 +01:00
2026-09-30 20:07:52 +02:00
2026-01-01 20:00:39 +01:00
2026-09-11 08:22:50 +02:00
2026-09-30 20:07:29 +02:00
2026-09-30 20:07:16 +02:00
2026-09-30 20:07:24 +02:00
2026-09-27 16:56:21 +02:00
2026-09-27 16:56:21 +02:00
2026-09-30 20:07:33 +02:00
2026-09-27 14:19:22 +02:00
2026-09-30 20:13:34 +02:00
2026-09-30 20:06:34 +02:00
2026-09-30 20:07:06 +02:00
2026-09-30 20:07:45 +02:00
2026-09-27 16:56:21 +02:00
2026-07-02 15:59:36 +02:00
2026-09-24 17:12:02 +02:00
2026-01-01 20:00:39 +01:00
2026-09-09 09:52:58 +02:00
2026-09-09 09:52:58 +02:00
2026-01-01 20:00:39 +01:00
2026-07-09 20:38:39 +02:00
2026-01-01 20:00:39 +01:00
2026-09-30 20:07:10 +02:00
2026-09-30 20:06:59 +02:00
2026-09-27 14:28:38 +02:00
2026-09-28 22:20:43 +02:00
2026-09-27 14:19:22 +02:00
2026-01-01 20:00:39 +01:00
2026-09-30 20:07:16 +02:00
2026-09-30 20:07:19 +02:00
2026-09-30 20:08:17 +02:00
2026-09-16 20:15:46 +02:00
2026-09-09 09:48:17 +02:00
2026-09-16 20:15:46 +02:00
2026-01-01 20:00:39 +01:00
2026-09-27 16:56:21 +02:00
2026-09-24 17:01:15 +02:00
2026-09-30 20:06:34 +02:00
2026-01-01 20:00:39 +01:00
2026-09-30 20:07:33 +02:00
2026-01-01 20:00:39 +01:00
2026-01-01 20:00:39 +01:00
2026-09-28 17:51:07 +02:00
2026-09-27 16:56:21 +02:00
2026-09-27 16:56:21 +02:00
2026-09-27 14:19:22 +02:00
2026-09-27 14:19:22 +02:00
2026-01-01 20:00:39 +01:00
2026-01-01 20:00:39 +01:00
2026-08-03 08:35:53 +02:00
2026-09-27 14:28:38 +02:00
2026-01-01 20:00:39 +01:00
2026-09-25 20:44:30 +02:00
2026-01-01 20:00:39 +01:00
2026-09-09 09:50:39 +02:00
2026-09-09 09:50:39 +02:00
2026-09-16 20:16:43 +02:00
2026-09-16 20:16:43 +02:00
2026-09-16 20:16:43 +02:00
2026-09-10 17:20:48 +02:00
2026-01-01 20:00:39 +01:00
2026-09-27 14:19:22 +02:00
2026-01-01 20:00:39 +01:00