63static inline uint16_t bytes_read_u16_unaligned(
const void *ptr) {
65 __builtin_memcpy(&value, ptr,
sizeof(value));
86static inline uint32_t bytes_read_u32_unaligned(
const void *ptr) {
88 __builtin_memcpy(&value, ptr,
sizeof(value));
109static inline void bytes_write_u16_unaligned(
void *ptr,
uint16_t value) {
110 __builtin_memcpy(ptr, &value,
sizeof(value));
130static inline void bytes_write_u32_unaligned(
void *ptr,
uint32_t value) {
131 __builtin_memcpy(ptr, &value,
sizeof(value));
175 ptr[0] = (
uint8_t)(value >> 24);
176 ptr[1] = (
uint8_t)(value >> 16);
177 ptr[2] = (
uint8_t)(value >> 8);
222static inline bool bytes_safe_size_mul(
size_t a,
size_t b,
size_t *result) {
223 if (result == NULL) {
227 if (a != 0 && b > SIZE_MAX / a) {
Application limits and constraints.