53 lines
2.4 KiB
Diff
53 lines
2.4 KiB
Diff
|
From e2aed004302e51cfa5b6ce8c8ab65ef92aa83196 Mon Sep 17 00:00:00 2001
|
||
|
From: Patrick Monnerat <patrick@monnerat.net>
|
||
|
Date: Fri, 23 Dec 2022 15:35:27 +0100
|
||
|
Subject: 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
|
||
|
---
|
||
|
include/curl/typecheck-gcc.h | 6 ++----
|
||
|
1 file changed, 2 insertions(+), 4 deletions(-)
|
||
|
|
||
|
diff --git a/include/curl/typecheck-gcc.h b/include/curl/typecheck-gcc.h
|
||
|
index bf655bb632..85aa8b7b49 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 *)) \
|
||
|
--
|
||
|
cgit v1.2.3-53-g9071
|
||
|
|