[x265] [PATCH] strtok_r: fix detection on Windows

Rafaël Carré funman at videolan.org
Sat Apr 5 23:33:59 CEST 2014


On 04/05/14 22:27, Steve Borho wrote:
> On Sat, Apr 5, 2014 at 4:26 AM, Rafaël Carré <funman at videolan.org> wrote:
>> Make sure HAVE_STRTOK_R is always defined, to 0 if absent
>> Fix typo in #if
>> mingw-w64's pthread.h #defines strtok_r, make sure to undef it
>> before we use our own definition.
>> ---
>>  source/common/CMakeLists.txt | 3 +++
>>  source/common/param.cpp      | 3 ++-
>>  2 files changed, 5 insertions(+), 1 deletion(-)
>>
>> diff --git a/source/common/CMakeLists.txt b/source/common/CMakeLists.txt
>> index 09029ba..63cdf09 100644
>> --- a/source/common/CMakeLists.txt
>> +++ b/source/common/CMakeLists.txt
>> @@ -130,6 +130,9 @@ if(ENABLE_ASSEMBLY)
>>  endif(ENABLE_ASSEMBLY)
>>
>>  check_symbol_exists(strtok_r "string.h" HAVE_STRTOK_R)
>> +if(HAVE_STRTOK_R STREQUAL "")
>> +    set(HAVE_STRTOK_R "0")
>> +endif()
> 
> hmm, I think I would prefer to use:
> 
> if(HAVE_STRTOK_R)
>   set_source_files_properties(param.cpp PROPERTIES COMPILE_FLAGS
> -DHAVE_STRTOK_R=1)
> endif()
> 
> then use #ifndef in the source

Works for me

>>  set_source_files_properties(param.cpp PROPERTIES COMPILE_FLAGS -DHAVE_STRTOK_R=${HAVE_STRTOK_R})
>>
>>  if(GCC AND GCC_HAS_NO_NARROWING)
>> diff --git a/source/common/param.cpp b/source/common/param.cpp
>> index 57e3388..ac19c7e 100644
>> --- a/source/common/param.cpp
>> +++ b/source/common/param.cpp
>> @@ -37,7 +37,7 @@
>>  #define strcasecmp _stricmp
>>  #endif
>>
>> -#if !HAVE_STROTOK_R
>> +#if !HAVE_STRTOK_R
> 
> this is an obvious fix, thanks
> 
>>  /*
>>   * adapted from public domain strtok_r() by Charlie Gordon
>>   *
>> @@ -49,6 +49,7 @@
>>   *      http://groups.google.com/group/comp.lang.c/msg/7c7b39328fefab9c
>>   */
>> +#undef strtok_r
> 
> and I understand the need for this
> 
>>  char* strtok_r(
>>      char *str,
>>      const char *delim,
> 
> Cheers
> 


More information about the x265-devel mailing list