ispyisail
721bd155f5
Reject non-finite values when loading a wire
...
A wire read "nan" or "inf" for its position, its segment lengths and
its label position without checking them: QString::toDouble() accepts
all three as numbers. PR #792 and #996 closed this gap for elements,
terminals and texts; wires were left out.
The worst case is a segment length: a single "nan" passes the check
that the segments add up to the distance between the two terminals,
because every comparison with NaN is false. The whole path then turns
to NaN: on 2612_ats_singlephase.qet one bad length out of six was saved
back as six "nan" vertical segments, and the next save dropped them and
routed the wire automatically, so each save changed the file.
Now:
- a non-finite segment length is skipped like any unreadable one, so
the path fails the coherence check and the wire is routed
automatically at load, as already happens for "inf";
- a non-finite wire position is read as 0;
- a non-finite label position or rotation is ignored, as if the label
had not been moved or rotated.
Found by the mutation sweep (python3 -m simulator sweep, mutators
inject_nan_coordinate / inject_inf_coordinate). The 24 example projects
resave byte-identical with and without this change.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com >
2026-09-30 08:42:12 +13:00
..
2026-09-29 16:08:45 +13:00
2026-09-29 16:08:45 +13:00
2026-09-25 15:09:21 +02:00
2026-01-16 15:24:35 +01:00
2026-01-26 18:47:43 +01:00
2026-09-29 01:01:14 +02:00
2026-09-28 23:30:27 +02:00
2026-09-27 09:13:55 +13:00
2026-08-17 10:25:44 +02:00
2026-09-18 14:31:49 +12:00
2026-09-29 01:01:14 +02:00
2026-09-22 09:07:27 +02:00
2026-09-25 20:44:02 +12:00
2026-07-31 09:52:32 +12:00
2026-09-24 09:59:21 +02:00
2026-08-11 11:48:58 +12:00
2025-05-22 21:33:32 +02:00
2026-09-30 08:42:12 +13:00
2026-01-16 15:24:35 +01:00
2026-09-07 10:44:30 +02:00
2026-01-16 15:24:35 +01:00
2026-09-17 05:41:50 -05:00
2026-09-29 11:00:16 +13:00
2026-09-29 09:59:21 +13:00
2026-09-25 23:25:27 +12:00
2026-01-16 15:24:35 +01:00
2026-09-28 23:01:42 +02:00
2026-08-23 18:25:23 +02:00
2026-09-29 15:17:16 +13:00
2026-09-29 23:24:50 +13:00
2026-09-24 10:30:01 +02:00
2026-01-16 15:24:35 +01:00
2026-09-28 09:19:59 +13:00
2026-08-09 09:11:40 +02:00
2026-08-09 09:11:40 +02:00
2026-09-13 02:00:50 +12:00
2026-09-11 20:12:09 +03:00
2026-09-26 08:22:12 +12:00
2026-01-16 15:24:35 +01:00
2026-01-16 15:24:35 +01:00
2026-09-27 21:54:44 +13:00
2026-09-26 07:37:38 +12:00
2026-09-26 21:18:35 +12:00
2026-09-26 21:06:13 +12:00
2026-09-27 21:54:36 +13:00
2026-09-27 21:54:36 +13:00
2026-09-26 21:34:02 +12:00
2026-09-26 21:34:02 +12:00
2026-08-03 13:19:51 +12:00
2026-01-16 15:24:35 +01:00
2026-09-12 23:06:15 +12:00
2026-01-16 15:24:35 +01:00
2026-01-16 15:24:35 +01:00
2026-01-16 15:24:35 +01:00
2026-09-20 21:56:43 +02:00
2026-01-16 15:24:35 +01:00
2026-01-16 15:24:35 +01:00
2026-01-16 15:24:35 +01:00
2026-01-16 15:24:35 +01:00
2026-08-08 00:32:31 +02:00
2026-01-16 15:24:35 +01:00
2026-09-09 11:45:36 +12:00
2026-09-27 21:54:44 +13:00
2026-09-27 21:54:44 +13:00
2026-09-29 23:09:57 +13:00
2026-09-29 23:09:57 +13:00
2026-09-27 21:14:47 +13:00
2026-08-22 11:25:47 +02:00
2026-09-29 23:23:32 +13:00
2026-09-29 23:23:32 +13:00
2026-09-28 21:59:02 +13:00
2026-09-22 09:07:27 +02:00
2026-09-28 06:16:17 +13:00
2026-09-26 21:40:32 +12:00
2026-09-26 21:40:46 +12:00
2026-09-26 21:40:46 +12:00
2026-09-27 11:16:37 +13:00
2026-01-16 15:24:35 +01:00
2026-09-07 20:54:18 +12:00
2026-09-28 23:01:42 +02:00
2026-09-27 09:08:02 +02:00
2026-09-27 21:54:44 +13:00
2026-09-27 21:54:44 +13:00
2026-09-07 10:44:30 +02:00
2026-09-07 10:44:30 +02:00
2026-08-08 21:53:20 +12:00
2026-04-26 10:48:47 +02:00
2026-07-14 19:27:16 +02:00
2026-01-16 15:24:35 +01:00
2026-08-08 00:32:31 +02:00
2026-01-16 15:24:35 +01:00
2026-09-19 12:22:24 -05:00
2026-01-16 15:24:35 +01:00
2026-09-29 23:23:32 +13:00
2026-09-29 23:23:32 +13:00
2026-09-19 12:22:24 -05:00
2026-05-13 19:42:11 +02:00
2026-09-27 21:14:47 +13:00
2026-08-04 16:36:23 +12:00
2026-01-16 15:24:35 +01:00
2026-01-16 15:24:35 +01:00
2026-09-26 10:36:40 +12:00
2026-09-26 10:22:50 +12:00
2026-09-27 21:54:36 +13:00
2026-09-27 21:54:36 +13:00
2026-08-08 08:09:45 +02:00
2026-08-06 21:37:40 +02:00
2026-08-09 19:25:56 +02:00
2026-08-06 21:37:40 +02:00
2026-09-03 15:05:22 +02:00
2026-04-19 10:44:52 +02:00
2026-09-28 14:55:04 +02:00
2026-09-28 14:55:04 +02:00
2026-09-16 15:40:41 +12:00
2026-09-16 15:40:41 +12:00
2026-09-17 00:07:46 +02:00
2026-06-20 22:31:06 +12:00
2026-09-24 21:41:00 +12:00
2026-08-11 11:33:28 +12:00
2026-01-16 15:24:35 +01:00
2026-09-20 22:58:08 +02:00
2026-09-26 21:17:19 +12:00
2026-09-25 20:44:02 +12:00
2026-09-25 20:44:02 +12:00
2026-09-18 18:28:48 +02:00
2026-08-12 12:29:56 +02:00
2026-09-23 18:38:38 +02:00
2026-09-23 16:47:07 +12:00
2026-09-26 21:40:19 +12:00
2026-09-26 10:22:50 +12:00
2026-01-16 15:24:35 +01:00
2026-01-16 15:24:35 +01:00
2026-09-29 13:01:19 +02:00
2026-09-28 05:40:05 +13:00
2026-09-29 23:37:40 +13:00
2026-09-29 23:37:40 +13:00
2026-09-16 18:51:34 +12:00
2026-09-16 18:51:34 +12:00
2026-09-29 13:29:50 +13:00
2026-09-29 13:29:50 +13:00
2026-08-05 05:26:57 +12:00
2026-08-05 05:26:57 +12:00
2026-09-21 22:05:31 +02:00
2026-09-20 12:20:01 -05:00
2026-09-29 19:00:16 +13:00
2026-09-29 15:38:20 +13:00
2026-01-16 15:24:35 +01:00
2026-01-16 15:24:35 +01:00
2026-01-16 15:24:35 +01:00
2026-01-16 15:24:35 +01:00
2026-09-20 12:45:07 -05:00
2026-09-19 12:26:06 -05:00
2026-08-16 07:16:33 +02:00
2026-01-16 15:24:35 +01:00
2026-09-17 00:07:46 +02:00
2026-07-17 10:25:49 +02:00
2026-08-08 00:32:31 +02:00
2026-01-16 15:24:35 +01:00
2026-09-17 00:07:46 +02:00
2026-09-17 00:07:46 +02:00
2026-08-09 01:34:22 +02:00
2026-01-16 15:24:35 +01:00
2026-09-17 00:07:46 +02:00
2026-01-16 15:24:35 +01:00
2026-07-17 10:29:13 +02:00
2026-07-17 10:29:13 +02:00
2026-09-27 09:09:44 +02:00
2026-09-27 09:09:44 +02:00
2026-09-28 23:19:46 +02:00
2026-09-26 21:40:19 +12:00
2026-09-26 10:22:50 +12:00
2020-09-07 22:03:40 +02:00
2026-01-16 15:24:35 +01:00
2026-01-16 15:24:35 +01:00
2026-01-16 15:24:35 +01:00
2026-09-29 09:59:21 +13:00
2026-09-29 09:59:21 +13:00
2026-09-17 00:07:46 +02:00
2026-09-17 00:07:46 +02:00
2026-06-11 12:39:43 +12:00
2026-06-11 12:39:43 +12:00