From: Christian Schoenebeck Date: Fri, 1 Oct 2021 14:27:13 +0000 (+0200) Subject: fsdev/p9array.h: check scalar type in P9ARRAY_NEW() X-Git-Tag: v6.2.0-rc0~37^2~3 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c0451f0bc4210d262268ff51c053a9277f20f862;p=thirdparty%2Fqemu.git fsdev/p9array.h: check scalar type in P9ARRAY_NEW() Make sure at compile time that the scalar type of the array requested to be created via P9ARRAY_NEW() matches the scalar type of the passed auto reference variable (unique pointer). Suggested-by: Richard Henderson Signed-off-by: Christian Schoenebeck Message-Id: --- diff --git a/fsdev/p9array.h b/fsdev/p9array.h index fff946a3d7e..6aa25327ca3 100644 --- a/fsdev/p9array.h +++ b/fsdev/p9array.h @@ -27,6 +27,8 @@ #ifndef QEMU_P9ARRAY_H #define QEMU_P9ARRAY_H +#include "qemu/compiler.h" + /** * P9Array provides a mechanism to access arrays in common C-style (e.g. by * square bracket [] operator) in conjunction with reference variables that @@ -149,6 +151,10 @@ * @param len - amount of array elements to be allocated immediately */ #define P9ARRAY_NEW(scalar_type, auto_var, len) \ + QEMU_BUILD_BUG_MSG( \ + !__builtin_types_compatible_p(scalar_type, typeof(*auto_var)), \ + "P9Array scalar type mismatch" \ + ); \ p9array_new_##scalar_type((&auto_var), len) #endif /* QEMU_P9ARRAY_H */