summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorPatrick Monnerat <patrick@monnerat.net>2022-12-23 15:35:27 +0100
committerDaniel Stenberg <daniel@haxx.se>2022-12-26 10:04:55 +0100
commite2aed004302e51cfa5b6ce8c8ab65ef92aa83196 (patch)
tree167a58b5713efc780580592fdb65970685cf8703 /include
parentef07452a5cc379e90c55a16ffa3a313b03f78df5 (diff)
downloadcurl-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.h6
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 *)) \