mirror of
https://github.com/MariaDB/server.git
synced 2025-01-15 19:42:28 +01:00
improve strmake_buf() to detect wrong usage reliably
strmake_buf() macro should only be used with char[] arrays, and never with char* pointers. To distinguish between the two we create a new variable of the same type and initialize it using array initializer, this causes compilation failure with pointers. The variable is unused and will be removed by the compiler. It's enough to do this check only with gcc, so it doesn't have to be portable.
This commit is contained in:
parent
7dcf1b5049
commit
479bd5a6fe
1 changed files with 1 additions and 1 deletions
|
@ -99,7 +99,7 @@ extern char *strmake(char *dst,const char *src,size_t length);
|
|||
#define strmake_buf(D,S) strmake(D, S, sizeof(D) - 1)
|
||||
#else
|
||||
#define strmake_buf(D,S) ({ \
|
||||
compile_time_assert(sizeof(D) != sizeof(char*)); \
|
||||
typeof (D) __x __attribute__((unused)) = { 2 }; \
|
||||
strmake(D, S, sizeof(D) - 1); \
|
||||
})
|
||||
#endif
|
||||
|
|
Loading…
Reference in a new issue