aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGES6
-rw-r--r--RELEASE-NOTES1
-rw-r--r--include/curl/curl.h10
3 files changed, 16 insertions, 1 deletions
diff --git a/CHANGES b/CHANGES
index b891e2118..cd041504d 100644
--- a/CHANGES
+++ b/CHANGES
@@ -6,6 +6,12 @@
Changelog
+Daniel Stenberg (11 Mar 2008)
+- Added a macro for curl_easy_setopt() that accepts three arguments and simply
+ does nothing with them, just to make sure libcurl users always use three
+ arguments to this function. Due to its use of ... for the third argument, it
+ is otherwise hard to detect abuse.
+
Michal Marek (11 Mar 2008)
- Added a type checking macro for curl_easy_setopt(), needs gcc-4.3 and only
works in C mode atm (http://curl.haxx.se/mail/lib-2008-02/0267.html ,
diff --git a/RELEASE-NOTES b/RELEASE-NOTES
index c491d18b3..0c20a0701 100644
--- a/RELEASE-NOTES
+++ b/RELEASE-NOTES
@@ -20,6 +20,7 @@ This release includes the following changes:
o added a type checking macro for curl_easy_setopt(), watch out for new
warnings in code using libcurl (needs gcc-4.3 and currently only works
in C mode)
+ o curl_easy_setopt() uses are now checked to use three arguments
This release includes the following bugfixes:
diff --git a/include/curl/curl.h b/include/curl/curl.h
index 3027ca06d..4af714291 100644
--- a/include/curl/curl.h
+++ b/include/curl/curl.h
@@ -1792,8 +1792,16 @@ CURL_EXTERN CURLcode curl_easy_pause(CURL *handle, int bitmask);
#include "multi.h"
/* the typechecker doesn't work in C++ (yet) */
-#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) && !defined(__cplusplus)
+#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) && \
+ !defined(__cplusplus)
#include "typecheck-gcc.h"
+#else
+#if defined(__STDC__) && (__STDC__ >= 1)
+/* This preprocessor magic that replaces a call with the exact same call is
+ only done to make sure application authors use exactly three arguments
+ to this function. */
+#define curl_easy_setopt(handle,opt,param) curl_easy_setopt(handle,opt,param)
+#endif /* __STDC__ >= 1 */
#endif /* gcc >= 4.3 && !__cplusplus */
#endif /* __CURL_CURL_H */