From fb0ea399399a6531d7bb7485d5980f202a9b43d0 Mon Sep 17 00:00:00 2001 From: Hib Eris Date: Fri, 12 Apr 2013 11:01:54 +0200 Subject: [PATCH] Check for strcpy_s() and strcat_s() at configure time It is better to test for functions than to hardcode exceptions for specific compilers. This fixes compiling poppler with the latest mingw-w64 compiler which has strcpy_s() and strcat_s() build in. Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=63459 --- ConfigureChecks.cmake | 2 ++ configure.ac | 1 + test/perf-test.cc | 6 ++++-- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/ConfigureChecks.cmake b/ConfigureChecks.cmake index 9f67b43..d3f5732 100644 --- a/ConfigureChecks.cmake +++ b/ConfigureChecks.cmake @@ -36,6 +36,8 @@ check_function_exists(popen HAVE_POPEN) check_function_exists(mkstemp HAVE_MKSTEMP) check_function_exists(mkstemps HAVE_MKSTEMPS) check_function_exists(rand_r HAVE_RAND_R) +check_function_exists(strcpy_s HAVE_STRCPY_S) +check_function_exists(strcat_s HAVE_STRCAT_S) macro(CHECK_FOR_DIR include var) check_c_source_compiles( diff --git a/configure.ac b/configure.ac index 624b62d..f03d65f 100644 --- a/configure.ac +++ b/configure.ac @@ -251,6 +251,7 @@ fi dnl ##### Checks for library functions. AC_CHECK_FUNCS(popen mkstemp mkstemps) +AC_CHECK_FUNCS(strcpy_s strcat_s) dnl ##### Back to C for the library tests. AC_LANG_C diff --git a/test/perf-test.cc b/test/perf-test.cc index 84bbcda..da14a7c 100644 --- a/test/perf-test.cc +++ b/test/perf-test.cc @@ -1,5 +1,5 @@ /* Copyright Krzysztof Kowalczyk 2006-2007 - Copyright Hib Eris 2008 + Copyright Hib Eris 2008, 2013 License: GPLv2 */ /* A tool to stress-test poppler rendering and measure rendering times for @@ -325,7 +325,7 @@ void sleep_milliseconds(int milliseconds) #endif } -#ifndef _MSC_VER +#ifndef HAVE_STRCPY_S void strcpy_s(char* dst, size_t dst_size, const char* src) { size_t src_size = strlen(src) + 1; @@ -338,7 +338,9 @@ void strcpy_s(char* dst, size_t dst_size, const char* src) } } } +#endif +#ifndef HAVE_STRCAT_S void strcat_s(char *dst, size_t dst_size, const char* src) { size_t dst_len = strlen(dst); -- 1.7.10.4