summaryrefslogtreecommitdiff
path: root/net-misc/curl/files/curl-7.87.0-typecheck-deprecated.patch
diff options
context:
space:
mode:
Diffstat (limited to 'net-misc/curl/files/curl-7.87.0-typecheck-deprecated.patch')
-rw-r--r--net-misc/curl/files/curl-7.87.0-typecheck-deprecated.patch48
1 files changed, 48 insertions, 0 deletions
diff --git a/net-misc/curl/files/curl-7.87.0-typecheck-deprecated.patch b/net-misc/curl/files/curl-7.87.0-typecheck-deprecated.patch
new file mode 100644
index 000000000000..dec6d117efa4
--- /dev/null
+++ b/net-misc/curl/files/curl-7.87.0-typecheck-deprecated.patch
@@ -0,0 +1,48 @@
+https://bugs.gentoo.org/890587
+https://github.com/curl/curl/issues/10148
+https://github.com/curl/curl/commit/e2aed004302e51cfa5b6ce8c8ab65ef92aa83196
+
+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: [PATCH] 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
+--- 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 *)) \
+