diff options
author | Dimitri van Heesch <doxygen@gmail.com> | 2021-03-26 18:23:12 (GMT) |
---|---|---|
committer | Dimitri van Heesch <doxygen@gmail.com> | 2021-03-26 18:23:12 (GMT) |
commit | 0dac69c7d148cfa63b746d83e1798f89b2da2251 (patch) | |
tree | 0bc7b8f0ed16bb8fd1ccbeea5cef900a62f2dd2e /src/qcstring.h | |
parent | 1b03538eb097fd32896554749fb6cefc9e195e61 (diff) | |
download | Doxygen-0dac69c7d148cfa63b746d83e1798f89b2da2251.zip Doxygen-0dac69c7d148cfa63b746d83e1798f89b2da2251.tar.gz Doxygen-0dac69c7d148cfa63b746d83e1798f89b2da2251.tar.bz2 |
Avoid using std::isspace and friends on potentially multibyte characters
Diffstat (limited to 'src/qcstring.h')
-rw-r--r-- | src/qcstring.h | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/qcstring.h b/src/qcstring.h index 6e2802d..7cf6dd3 100644 --- a/src/qcstring.h +++ b/src/qcstring.h @@ -82,10 +82,14 @@ inline int qstrncmp( const char *str1, const char *str2, uint len ) { return (str1 && str2) ? strncmp(str1,str2,len) : (int)((intptr_t)str2 - (intptr_t)str1); } +inline bool qisspace(char c) +{ return c==' ' || c=='\t' || c=='\n' || c=='\r'; } + int qstricmp( const char *str1, const char *str2 ); int qstrnicmp( const char *str1, const char *str2, uint len ); + /** This is an alternative implementation of QCString. It provides basically * the same functions but uses std::string as the underlying string type */ @@ -231,11 +235,11 @@ class QCString QCString stripWhiteSpace() const { int sl = (uint)m_rep.size(); - if (sl==0 || (!std::isspace(m_rep[0]) && !std::isspace(m_rep[sl-1]))) return *this; + if (sl==0 || (!qisspace(m_rep[0]) && !qisspace(m_rep[sl-1]))) return *this; int start=0,end=sl-1; - while (start<sl && std::isspace(m_rep[start])) start++; + while (start<sl && qisspace(m_rep[start])) start++; if (start==sl) return QCString(); // only whitespace - while (end>start && std::isspace(m_rep[end])) end--; + while (end>start && qisspace(m_rep[end])) end--; return QCString(m_rep.substr(start,1+end-start)); } |