diff options
author | Dimitri van Heesch <doxygen@gmail.com> | 2019-12-23 13:03:44 (GMT) |
---|---|---|
committer | Dimitri van Heesch <doxygen@gmail.com> | 2019-12-23 13:03:44 (GMT) |
commit | 54ec927d886b895b1ec7bbe62c143b052970fdf6 (patch) | |
tree | 3cc9a9a066c237cf46cf107e48afa8f7a0e20aab | |
parent | 38337d6d42a0630b988728b89fd016bec5b46c1c (diff) | |
download | Doxygen-54ec927d886b895b1ec7bbe62c143b052970fdf6.zip Doxygen-54ec927d886b895b1ec7bbe62c143b052970fdf6.tar.gz Doxygen-54ec927d886b895b1ec7bbe62c143b052970fdf6.tar.bz2 |
Fix for use of non portable strnstr function
-rw-r--r-- | src/markdown.cpp | 3 | ||||
-rw-r--r-- | src/portable.cpp | 15 | ||||
-rw-r--r-- | src/portable.h | 1 |
3 files changed, 18 insertions, 1 deletions
diff --git a/src/markdown.cpp b/src/markdown.cpp index 0a71aae..8594a15 100644 --- a/src/markdown.cpp +++ b/src/markdown.cpp @@ -51,6 +51,7 @@ #include "config.h" #include "section.h" #include "message.h" +#include "portable.h" //----------- @@ -1031,7 +1032,7 @@ static int processCodeSpan(GrowBuf &out, const char *data, int /*offset*/, int s static void addStrEscapeUtf8Nbsp(GrowBuf &out,const char *s,int len) { - if (strnstr(s,g_doxy_nsbp,len)==0) // no escape needed -> fast + if (Portable::strnstr(s,g_doxy_nsbp,len)==0) // no escape needed -> fast { out.addStr(s,len); } diff --git a/src/portable.cpp b/src/portable.cpp index 1134351..9927c45 100644 --- a/src/portable.cpp +++ b/src/portable.cpp @@ -475,3 +475,18 @@ void Portable::setShortDir(void) delete [] buffer; #endif } + + +char *Portable::strnstr(const char *haystack, const char *needle, size_t haystack_len) +{ + size_t needle_len = strnlen(needle, haystack_len); + if (needle_len < haystack_len || !needle[needle_len]) + { + char *x = static_cast<char*>(memmem(haystack, haystack_len, needle, needle_len)); + if (x && !memchr(haystack, 0, x - haystack)) + { + return x; + } + } + return 0; +} diff --git a/src/portable.h b/src/portable.h index 27b7052..be73435 100644 --- a/src/portable.h +++ b/src/portable.h @@ -42,6 +42,7 @@ namespace Portable bool isAbsolutePath(const char *fileName); void correct_path(void); void setShortDir(void); + char * strnstr(const char *haystack, const char *needle, size_t haystack_len); } |