diff --git a/src/common/engine/stringtable.cpp b/src/common/engine/stringtable.cpp index eea149ef09..c983afc378 100644 --- a/src/common/engine/stringtable.cpp +++ b/src/common/engine/stringtable.cpp @@ -513,8 +513,30 @@ size_t FStringTable::ProcessEscapes (char *iptr) c = '\r'; else if (c == 't') c = '\t'; + else if (c == 'x') + { + c = 0; + for (int i = 0; i < 2; i++) + { + char cc = *iptr++; + if (cc >= '0' && cc <= '9') + c = (c << 4) + cc - '0'; + else if (cc >= 'a' && cc <= 'f') + c = (c << 4) + 10 + cc - 'a'; + else if (cc >= 'A' && cc <= 'F') + c = (c << 4) + 10 + cc - 'A'; + else + { + iptr--; + break; + } + } + if (c == 0) continue; + } else if (c == '\n') continue; + + } *optr++ = c; }