[libcxx] r229119 - Rooting out more undefined behavior in char_traits.

Joerg Sonnenberger joerg at britannica.bec.de
Sun Feb 15 09:52:13 PST 2015


On Fri, Feb 13, 2015 at 04:04:42PM -0000, Marshall Clow wrote:
> Modified: libcxx/trunk/include/string
> URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/string?rev=229119&r1=229118&r2=229119&view=diff
> ==============================================================================
> --- libcxx/trunk/include/string (original)
> +++ libcxx/trunk/include/string Fri Feb 13 10:04:42 2015
> @@ -639,16 +639,16 @@ struct _LIBCPP_TYPE_VIS_ONLY char_traits
>          {return __n == 0 ? 0 : memcmp(__s1, __s2, __n);}
>      static inline size_t length(const char_type* __s) {return strlen(__s);}
>      static inline const char_type* find(const char_type* __s, size_t __n, const char_type& __a)
> -        {return (const char_type*)memchr(__s, to_int_type(__a), __n);}
> +        {return __n == 0 ? NULL : (const char_type*) memchr(__s, to_int_type(__a), __n);}

Why is this undefined behavior?

Joerg



More information about the cfe-commits mailing list