Peng Liu
a5b3d3a03f
[libc++] Fix {std, ranges}::copy for vector<bool> with small storage types ( #131545 )
...
The current implementation of `{std, ranges}::copy` fails to copy
`vector<bool>` correctly when the underlying storage type
(`__storage_type`) is smaller than `int`, such as `unsigned char`,
`unsigned short`, `uint8_t` and `uint16_t`. The root cause is that the
unsigned small storage type undergoes integer promotion to (signed)
`int`, which is then left and right shifted, leading to UB (before
C++20) and sign-bit extension (since C++20) respectively. As a result,
the underlying bit mask evaluations become incorrect, causing erroneous
copying behavior.
This patch resolves the issue by correcting the internal bitwise
operations, ensuring that `{std, ranges}::copy` operates correctly for
`vector<bool>` with any custom (unsigned) storage types.
Fixes #131692 .
2025-03-19 11:55:51 -04:00
..
2024-12-18 21:10:27 +01:00
2024-11-06 12:10:06 +01:00
2024-11-06 12:10:06 +01:00
2024-12-18 21:10:27 +01:00
2024-04-22 22:13:58 +02:00
2025-01-08 11:12:59 -05:00
2024-10-30 11:51:55 +01:00
2025-01-30 14:55:05 -05:00
2024-11-06 12:10:06 +01:00
2024-11-12 23:03:52 +01:00
2025-03-19 11:55:51 -04:00
2024-11-06 12:10:06 +01:00
2025-03-19 11:36:29 -04:00
2024-12-18 21:10:27 +01:00
2025-03-19 11:51:21 -04:00
2025-02-05 11:39:49 -05:00
2024-12-18 21:10:27 +01:00
2024-12-18 21:10:27 +01:00
2024-09-12 21:18:43 +02:00
2024-09-12 21:18:43 +02:00
2025-03-13 14:15:03 -04:00
2024-12-18 21:10:27 +01:00
2024-12-18 21:10:27 +01:00
2025-03-19 07:42:23 +08:00
2024-09-12 21:18:43 +02:00
2024-12-18 21:10:27 +01:00
2024-09-12 21:18:43 +02:00
2024-12-18 21:10:27 +01:00
2024-12-18 21:10:27 +01:00
2024-12-18 21:10:27 +01:00
2025-01-08 11:12:59 -05:00
2024-04-22 22:13:58 +02:00
2024-11-06 10:39:19 +01:00
2024-12-18 21:10:27 +01:00
2025-01-20 18:00:15 +01:00
2024-09-12 21:18:43 +02:00
2024-09-12 21:18:43 +02:00
2024-12-18 21:10:27 +01:00
2024-09-16 15:06:20 -04:00
2024-09-12 21:18:43 +02:00
2024-09-16 15:06:20 -04:00
2024-09-12 21:18:43 +02:00
2025-01-08 18:14:39 +01:00
2025-02-19 11:36:45 -05:00
2025-02-19 11:36:45 -05:00
2024-09-12 21:18:43 +02:00
2024-09-16 15:06:20 -04:00
2024-09-16 15:06:20 -04:00
2025-01-24 09:34:42 +01:00
2025-02-06 09:07:25 +01:00
2024-11-06 12:10:06 +01:00
2024-11-06 12:10:06 +01:00
2024-11-06 12:10:06 +01:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-11-06 12:10:06 +01:00
2024-11-12 23:03:52 +01:00
2024-11-12 23:03:52 +01:00
2024-11-06 12:10:06 +01:00
2024-08-01 08:54:06 -04:00
2024-09-16 15:06:20 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-11-06 12:10:06 +01:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-09-16 15:06:20 -04:00
2024-08-01 08:54:06 -04:00
2024-09-30 08:30:16 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-09-16 15:06:20 -04:00
2024-09-16 15:06:20 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2025-02-21 07:59:46 -05:00
2024-08-04 10:02:43 +02:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-10-30 11:51:55 +01:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-09-16 15:06:20 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-11-12 23:03:52 +01:00
2024-08-01 08:54:06 -04:00
2024-11-12 23:03:52 +01:00
2024-11-12 23:03:52 +01:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2025-03-06 09:23:55 +08:00
2025-03-07 01:27:48 +08:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2025-01-08 11:12:59 -05:00
2024-08-01 08:54:06 -04:00
2024-08-01 08:54:06 -04:00
2024-09-12 21:18:43 +02:00
2024-09-12 21:18:43 +02:00
2025-03-13 14:07:23 -04:00
2024-09-16 15:06:20 -04:00
2024-09-16 15:06:20 -04:00
2024-11-12 23:03:52 +01:00
2024-09-16 15:06:20 -04:00
2024-11-12 23:03:52 +01:00
2024-11-12 23:03:52 +01:00
2024-10-31 02:20:10 +01:00
2025-02-28 13:38:52 +01:00
2025-01-14 10:24:35 -05:00
2025-03-04 09:23:29 +08:00
2025-02-21 07:59:46 -05:00
2025-03-04 17:15:36 -05:00
2025-01-08 11:12:59 -05:00
2024-09-16 15:06:20 -04:00
2024-11-06 12:10:06 +01:00
2025-01-08 11:12:59 -05:00
2024-09-16 15:06:20 -04:00