diff options
author | Patrick Monnerat <patrick@monnerat.net> | 2022-12-23 15:35:27 +0100 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2022-12-26 10:04:55 +0100 |
commit | e2aed004302e51cfa5b6ce8c8ab65ef92aa83196 (patch) | |
tree | 167a58b5713efc780580592fdb65970685cf8703 /include | |
parent | ef07452a5cc379e90c55a16ffa3a313b03f78df5 (diff) | |
download | curl-e2aed004302e51cfa5b6ce8c8ab65ef92aa83196.tar.gz |
typecheck: accept expressions for option/info parameters
As expressions can have side effects, evaluate only once.
To enable deprecation reporting only once, get rid of the __typeof__
use to define the local temporary variable and use the target type
(CURLoption/CURLINFO). This also avoids multiple reports on type
conflicts (if some) by the curlcheck_* macros.
Note that CURLOPT_* and CURLINFO_* symbols may be deprecated, but not
their values: a curl_easy_setopt call with an integer constant as option
will never report a deprecation.
Reported-by: Thomas Klausner
Fixes #10148
Closes #10149
Diffstat (limited to 'include')
-rw-r--r-- | include/curl/typecheck-gcc.h | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/include/curl/typecheck-gcc.h b/include/curl/typecheck-gcc.h index bf655bb63..85aa8b7b4 100644 --- a/include/curl/typecheck-gcc.h +++ b/include/curl/typecheck-gcc.h @@ -42,9 +42,8 @@ */ #define curl_easy_setopt(handle, option, value) \ __extension__({ \ - CURL_IGNORE_DEPRECATION(__typeof__(option) _curl_opt = option;) \ + CURLoption _curl_opt = (option); \ if(__builtin_constant_p(_curl_opt)) { \ - (void) option; \ CURL_IGNORE_DEPRECATION( \ if(curlcheck_long_option(_curl_opt)) \ if(!curlcheck_long(value)) \ @@ -120,9 +119,8 @@ /* wraps curl_easy_getinfo() with typechecking */ #define curl_easy_getinfo(handle, info, arg) \ __extension__({ \ - CURL_IGNORE_DEPRECATION(__typeof__(info) _curl_info = info;) \ + CURLINFO _curl_info = (info); \ if(__builtin_constant_p(_curl_info)) { \ - (void) info; \ CURL_IGNORE_DEPRECATION( \ if(curlcheck_string_info(_curl_info)) \ if(!curlcheck_arr((arg), char *)) \ |