kalenikaliaksandr
70a1a9e82f
AK: Apply empty base optimization to Variant on Windows
...
On the MSVC ABI (used by clang-cl), each empty base class is given a
unique address with 1 byte of padding by default. Variant inherits from
a deep chain of empty base classes (InheritFromPacks ->
InheritFromUniqueEntries -> VariantConstructors) for its inherited
constructor mechanism. Without __declspec(empty_bases), the pointer
adjustment in VariantConstructors::internal_cast() from the
VariantConstructors subobject back to the Variant base was computed
incorrectly due to accumulated padding, causing the constructor to write
m_data and m_index at wrong offsets and corrupting the stored object.
This manifested as heap corruption (STATUS_HEAP_CORRUPTION 0xc0000374)
whenever a Variant containing a large type (e.g. ByteCode at 240 bytes)
was destroyed after being constructed through the inherited constructor
path. In practice this crashed `new RegExp('a')` in LibJS on Windows,
preventing ~880 of ~1058 LibJS runtime tests from running.
2026-03-25 00:57:49 +01:00
..
2022-11-26 15:51:34 +01:00
2022-11-26 15:51:34 +01:00
2025-05-14 02:01:59 -06:00
2025-11-20 15:44:25 +01:00
2025-11-07 11:27:51 +01:00
2025-05-14 02:01:59 -06:00
2026-03-02 17:06:39 -06:00
2024-07-01 10:15:24 -06:00
2024-12-04 16:45:58 +00:00
2026-02-17 12:38:51 +00:00
2025-05-03 11:21:10 -04:00
2026-02-22 13:56:12 -05:00
2024-02-25 17:24:36 -07:00
2024-10-04 13:19:50 +02:00
2024-07-17 09:56:13 -06:00
2024-11-20 21:13:23 +01:00
2025-01-04 20:32:35 +01:00
2024-02-12 14:08:56 +01:00
2024-04-30 13:22:56 +02:00
2023-10-11 14:36:48 -04:00
2024-12-14 16:12:12 +01:00
2025-12-10 07:43:22 -05:00
2022-11-26 15:51:34 +01:00
2025-04-07 17:44:38 +02:00
2026-02-17 12:38:51 +00:00
2026-02-17 12:38:51 +00:00
2026-02-17 12:38:51 +00:00
2024-08-05 17:21:26 +01:00
2026-03-21 18:20:09 -05:00
2025-05-14 02:01:59 -06:00
2026-02-17 12:38:51 +00:00
2026-02-24 13:24:58 +01:00
2024-10-04 13:19:50 +02:00
2026-02-23 18:30:40 +01:00
2025-05-14 02:01:59 -06:00
2025-08-08 12:54:06 +02:00
2025-08-08 12:54:06 +02:00
2024-09-10 13:51:28 +02:00
2025-06-11 18:16:29 +02:00
2025-06-11 18:16:29 +02:00
2025-04-18 17:09:27 +02:00
2022-11-26 15:51:34 +01:00
2026-03-04 22:27:40 +01:00
2022-12-17 16:00:08 -05:00
2025-06-17 18:39:18 -06:00
2025-06-17 18:39:18 -06:00
2022-12-06 21:31:00 +00:00
2025-04-14 17:40:13 +02:00
2025-05-14 02:01:59 -06:00
2026-02-02 14:11:49 +01:00
2024-07-18 19:43:57 +02:00
2023-01-02 20:27:20 -05:00
2025-11-18 13:31:52 +01:00
2025-05-10 21:19:46 -04:00
2025-05-26 18:48:09 +02:00
2026-01-22 08:54:49 -05:00
2024-10-04 13:19:50 +02:00
2026-01-14 11:46:23 +01:00
2024-07-18 09:43:38 +01:00
2026-02-23 18:30:40 +01:00
2026-01-26 19:37:42 +01:00
2026-03-20 12:03:36 +01:00
2026-02-26 19:52:49 -06:00
2026-02-17 12:38:51 +00:00
2026-02-26 08:03:50 -05:00
2026-02-18 13:13:32 -06:00
2025-08-13 09:56:13 -04:00
2026-02-26 13:50:11 +01:00
2025-05-14 02:01:59 -06:00
2026-02-20 22:47:24 +01:00
2026-01-29 10:10:12 +01:00
2026-03-19 14:21:44 +01:00
2026-02-17 12:38:51 +00:00
2024-10-04 13:19:50 +02:00
2025-05-14 02:01:59 -06:00
2024-12-06 06:44:27 +00:00
2025-04-23 09:13:45 +01:00
2024-06-18 09:36:25 +02:00
2025-04-15 02:19:06 -06:00
2024-12-28 05:39:32 -08:00
2025-04-15 02:19:06 -06:00
2026-02-21 12:37:44 +01:00
2026-02-21 12:37:44 +01:00
2024-10-04 13:19:50 +02:00
2024-10-25 09:15:28 +02:00
2025-02-20 19:27:51 -05:00
2025-03-04 15:33:39 -05:00
2024-06-18 09:36:25 +02:00
2025-02-20 19:27:51 -05:00
2025-02-20 19:27:51 -05:00
2025-02-20 19:27:51 -05:00
2025-07-03 09:51:56 -04:00
2025-03-20 10:50:24 +01:00
2025-03-20 10:50:24 +01:00
2025-02-20 19:27:51 -05:00
2025-05-14 02:01:59 -06:00
2024-10-04 13:19:50 +02:00
2025-08-08 12:54:06 +02:00
2024-11-19 22:07:01 -07:00
2025-09-01 11:11:38 +02:00
2025-02-17 14:57:00 +01:00
2024-09-05 19:21:52 +02:00
2026-02-22 13:56:12 -05:00
2024-03-25 20:35:00 +01:00
2025-05-14 02:01:59 -06:00
2025-03-03 15:58:27 +01:00
2025-08-08 12:54:06 +02:00
2026-02-17 12:38:51 +00:00
2024-11-19 14:32:11 -07:00
2025-04-22 21:19:31 -06:00
2025-09-18 22:37:18 +02:00
2025-09-18 22:37:18 +02:00
2025-09-18 22:37:18 +02:00
2026-02-17 12:38:51 +00:00
2026-02-17 12:38:51 +00:00
2024-11-10 14:48:20 -07:00
2026-03-20 12:03:36 +01:00
2026-02-17 12:38:51 +00:00
2026-02-17 12:38:51 +00:00
2025-09-18 22:37:18 +02:00
2026-02-21 11:49:42 +01:00
2026-03-17 18:58:37 -05:00
2024-12-22 12:33:41 +01:00
2026-03-24 12:04:50 -04:00
2026-03-24 12:04:50 -04:00
2026-01-29 05:22:27 -06:00
2026-02-18 13:13:32 -06:00
2025-09-18 22:37:18 +02:00
2024-12-28 05:39:32 -08:00
2023-12-17 18:25:10 +03:30
2026-03-21 18:20:09 -05:00
2024-10-04 13:19:50 +02:00
2025-01-09 18:36:34 +00:00
2025-05-14 02:01:59 -06:00
2025-07-13 19:15:05 +02:00
2025-05-14 02:01:59 -06:00
2025-05-14 02:01:59 -06:00
2025-08-23 16:04:36 -06:00
2025-12-25 20:21:37 +01:00
2023-01-02 20:13:24 +00:00
2025-09-01 11:11:38 +02:00
2026-02-18 13:13:32 -06:00
2025-12-01 15:12:52 +01:00
2022-12-03 23:52:23 +00:00
2024-11-10 19:12:59 +01:00
2023-07-01 07:03:11 +02:00
2026-03-03 11:26:42 -06:00
2026-03-19 14:21:44 +01:00
2026-02-22 13:56:12 -05:00
2025-08-08 12:54:06 +02:00
2025-08-08 12:54:06 +02:00
2026-02-21 12:37:44 +01:00
2026-03-20 12:03:36 +01:00
2026-02-17 12:38:51 +00:00
2026-02-22 13:56:12 -05:00
2025-10-05 11:24:46 +02:00
2025-10-05 11:24:46 +02:00
2026-02-23 18:30:40 +01:00
2026-02-23 18:30:40 +01:00
2025-09-01 11:11:38 +02:00
2025-08-07 02:05:50 +02:00
2025-10-05 11:24:46 +02:00
2025-08-11 16:55:37 +02:00
2025-07-03 09:51:56 -04:00
2026-02-17 12:38:51 +00:00
2026-02-22 13:56:12 -05:00
2025-03-22 17:27:45 +01:00
2026-03-21 18:20:09 -05:00
2026-02-22 13:56:12 -05:00
2026-02-24 13:24:58 +01:00
2025-11-21 02:46:33 +01:00
2024-12-04 16:45:58 +00:00
2026-02-18 08:02:45 -05:00
2026-02-27 11:42:38 -05:00
2026-03-19 14:21:44 +01:00
2024-02-11 18:53:00 +01:00
2025-11-07 11:27:51 +01:00
2025-09-01 11:11:38 +02:00
2024-03-25 14:26:29 -06:00
2025-07-05 01:25:22 +12:00
2026-02-17 12:38:51 +00:00
2025-08-22 14:06:46 +02:00
2026-01-26 19:37:42 +01:00
2026-03-20 12:03:36 +01:00
2025-10-05 11:24:46 +02:00
2025-10-05 16:39:14 +02:00
2026-02-22 13:56:12 -05:00
2026-02-17 12:38:51 +00:00
2025-10-05 11:24:46 +02:00
2026-02-17 12:38:51 +00:00
2026-02-17 12:38:51 +00:00
2024-10-20 08:50:01 +02:00
2025-07-18 12:45:38 -04:00
2026-02-20 22:01:44 +00:00
2026-03-25 00:57:49 +01:00
2026-02-02 14:11:49 +01:00
2026-02-26 08:03:50 -05:00
2026-02-26 08:03:50 -05:00
2026-02-17 10:48:09 -05:00