Merge pull request #30973 from mrc0mmand/gcc14

Reorder arguments for calloc()-like functions, part #2
This commit is contained in:
Lennart Poettering
2024-01-18 09:16:40 +01:00
committed by GitHub
6 changed files with 12 additions and 11 deletions
+1
View File
@@ -341,6 +341,7 @@ endif
basic_disabled_warnings = [
'-Wno-missing-field-initializers',
'-Wno-unused-parameter',
'-Wno-nonnull-compare',
]
possible_common_cc_flags = [
+2 -2
View File
@@ -47,7 +47,7 @@ typedef void* (*mfree_func_t)(void *p);
#define newdup(t, p, n) ((t*) memdup_multiply(p, (n), sizeof(t)))
#define newdup_suffix0(t, p, n) ((t*) memdup_suffix0_multiply(p, sizeof(t), (n)))
#define newdup_suffix0(t, p, n) ((t*) memdup_suffix0_multiply(p, (n), sizeof(t)))
#define malloc0(n) (calloc(1, (n) ?: 1))
@@ -137,7 +137,7 @@ _alloc_(2, 3) static inline void *memdup_multiply(const void *p, size_t need, si
/* Note that we can't decorate this function with _alloc_() since the returned memory area is one byte larger
* than the product of its parameters. */
static inline void *memdup_suffix0_multiply(const void *p, size_t size, size_t need) {
static inline void *memdup_suffix0_multiply(const void *p, size_t need, size_t size) {
if (size_multiply_overflow(size, need))
return NULL;
+4 -4
View File
@@ -383,10 +383,10 @@ assert_cc(sizeof(dummy_t) == 0);
/* Iterate through each variadic arg. All must be the same type as 'entry' or must be implicitly
* convertible. The iteration variable 'entry' must already be defined. */
#define VA_ARGS_FOREACH(entry, ...) \
_VA_ARGS_FOREACH(entry, UNIQ_T(_entries_, UNIQ), UNIQ_T(_current_, UNIQ), ##__VA_ARGS__)
#define _VA_ARGS_FOREACH(entry, _entries_, _current_, ...) \
for (typeof(entry) _entries_[] = { __VA_ARGS__ }, *_current_ = _entries_; \
((long)(_current_ - _entries_) < (long)ELEMENTSOF(_entries_)) && ({ entry = *_current_; true; }); \
_VA_ARGS_FOREACH(entry, UNIQ_T(_entries_, UNIQ), UNIQ_T(_current_, UNIQ), UNIQ_T(_va_sentinel_, UNIQ), ##__VA_ARGS__)
#define _VA_ARGS_FOREACH(entry, _entries_, _current_, _va_sentinel_, ...) \
for (typeof(entry) _va_sentinel_[1] = {}, _entries_[] = { __VA_ARGS__ __VA_OPT__(,) _va_sentinel_[0] }, *_current_ = _entries_; \
((long)(_current_ - _entries_) < (long)(ELEMENTSOF(_entries_) - 1)) && ({ entry = *_current_; true; }); \
_current_++)
#include "log.h"
+2 -2
View File
@@ -36,7 +36,7 @@ static inline void *xmalloc(size_t size) {
}
_malloc_ _alloc_(1, 2) _returns_nonnull_ _warn_unused_result_
static inline void *xmalloc_multiply(size_t size, size_t n) {
static inline void *xmalloc_multiply(size_t n, size_t size) {
assert_se(!__builtin_mul_overflow(size, n, &size));
return xmalloc(size);
}
@@ -57,7 +57,7 @@ static inline void* xmemdup(const void *p, size_t l) {
return memcpy(xmalloc(l), p, l);
}
#define xnew(type, n) ((type *) xmalloc_multiply(sizeof(type), (n)))
#define xnew(type, n) ((type *) xmalloc_multiply((n), sizeof(type)))
typedef struct {
EFI_PHYSICAL_ADDRESS addr;
+1 -1
View File
@@ -286,7 +286,7 @@ int bind_user_prepare(
if (!sd)
return log_oom();
cm = reallocarray(*custom_mounts, sizeof(CustomMount), *n_custom_mounts + 1);
cm = reallocarray(*custom_mounts, *n_custom_mounts + 1, sizeof(CustomMount));
if (!cm)
return log_oom();
+2 -2
View File
@@ -100,7 +100,7 @@ TEST(memdup_multiply_and_greedy_realloc) {
size_t i;
int *p;
dup = memdup_suffix0_multiply(org, sizeof(int), 3);
dup = memdup_suffix0_multiply(org, 3, sizeof(int));
assert_se(dup);
assert_se(dup[0] == 1);
assert_se(dup[1] == 2);
@@ -108,7 +108,7 @@ TEST(memdup_multiply_and_greedy_realloc) {
assert_se(((uint8_t*) dup)[sizeof(int) * 3] == 0);
free(dup);
dup = memdup_multiply(org, sizeof(int), 3);
dup = memdup_multiply(org, 3, sizeof(int));
assert_se(dup);
assert_se(dup[0] == 1);
assert_se(dup[1] == 2);