mirror of
https://github.com/curl/curl.git
synced 2024-12-15 06:40:09 +08:00
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
This commit is contained in:
parent
ef07452a5c
commit
e2aed00430
@ -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 *)) \
|
||||
|
Loading…
Reference in New Issue
Block a user