On 03/12/14 22:26, Jan Vesely wrote:
On Wed, 2014-12-03 at 15:37 +0000, Jose Fonseca wrote:
From: José Fonseca <[email protected]>
When in C++ mode, MSVC defines overloaded versions of standard names
that preserve constness. :-/
https://urldefense.proofpoint.com/v2/url?u=http-3A__msdn.microsoft.com_en-2Dus_library_b34ccac3.aspx&d=AAIFaQ&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=zfmBZnnVGHeYde45pMKNnVyzeaZbdIqVLprmZCM2zzE&m=kuuSkc8jlnYV0Y19w3u4anqzpUxOnVf0Tq2Mncnvhlo&s=VOrlzvSdpo34lv3NhFdrMOEs325YxKvSuEHTzZO_9Sw&e=
---
tests/util/piglit-util.h | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/tests/util/piglit-util.h b/tests/util/piglit-util.h
index 099075a..af9fb97 100755
--- a/tests/util/piglit-util.h
+++ b/tests/util/piglit-util.h
@@ -211,7 +211,11 @@ strtod_inf(const char *nptr, char **endptr)
static inline char *
strchrnul(const char *s, int c)
{
+#if defined(_MSC_VER) && defined(__cplusplus)
+ char *t = strchr((char *)s, c);
shouldn't the above version work in all cases? Implicit conversion to
const should be ok with other compilers, or am I missing something?
Yes, just `char *t = strchr((char *)s, c);` should work everywhere.
But _something_ more was needed to ensure that a few months later
somebody looking at the code wouldn't just yank the '(char *)' case out.
I could have added a comment, but it seemed to me that the `#if
defined(_MSC_VER) && defined(__cplusplus)` line described much more
succinctly and accurately why that cast was necessary than I could do in
English.
Jose
_______________________________________________
Piglit mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/piglit