Permalink
Browse files

Bug 728530 - Crash on \addindex \term

  • Loading branch information...
Dimitri van Heesch
Dimitri van Heesch committed Apr 19, 2014
1 parent 8ba739a commit 653a2a8b123b79835af9f684f8b92ef7f88712aa
Showing with 49 additions and 40 deletions.
  1. +23 −20 src/htmldocvisitor.cpp
  2. +26 −20 src/latexdocvisitor.cpp
View
@@ -44,27 +44,30 @@ static QCString convertIndexWordToAnchor(const QString &word)
QCString result;
const char *str = word.data();
unsigned char c;
while ((c = *str++))
{
if ((c >= 'a' && c <= 'z') || // ALPHA
(c >= 'A' && c <= 'A') || // ALPHA
(c >= '0' && c <= '9') || // DIGIT
c == '-' ||
c == '.' ||
c == '_' ||
c == '~'
)
{
result += c;
}
else
if (str)
{
while ((c = *str++))
{
char enc[4];
enc[0] = '%';
enc[1] = hex[(c & 0xf0) >> 4];
enc[2] = hex[c & 0xf];
enc[3] = 0;
result += enc;
if ((c >= 'a' && c <= 'z') || // ALPHA
(c >= 'A' && c <= 'A') || // ALPHA
(c >= '0' && c <= '9') || // DIGIT
c == '-' ||
c == '.' ||
c == '_' ||
c == '~'
)
{
result += c;
}
else
{
char enc[4];
enc[0] = '%';
enc[1] = hex[(c & 0xf0) >> 4];
enc[2] = hex[c & 0xf];
enc[3] = 0;
result += enc;
}
}
}
return result;
View
@@ -38,17 +38,20 @@ static QCString escapeLabelName(const char *s)
QCString result;
const char *p=s;
char c;
while ((c=*p++))
if (p)
{
switch (c)
while ((c=*p++))
{
case '%': result+="\\%"; break;
case '|': result+="\\texttt{\"|}"; break;
case '!': result+="\"!"; break;
case '{': result+="\\lcurly{}"; break;
case '}': result+="\\rcurly{}"; break;
case '~': result+="````~"; break; // to get it a bit better in index together with other special characters
default: result+=c;
switch (c)
{
case '%': result+="\\%"; break;
case '|': result+="\\texttt{\"|}"; break;
case '!': result+="\"!"; break;
case '{': result+="\\lcurly{}"; break;
case '}': result+="\\rcurly{}"; break;
case '~': result+="````~"; break; // to get it a bit better in index together with other special characters
default: result+=c;
}
}
}
return result;
@@ -73,19 +76,22 @@ QCString LatexDocVisitor::escapeMakeIndexChars(const char *s)
const char *p=s;
char str[2]; str[1]=0;
char c;
while ((c=*p++))
if (p)
{
switch (c)
while ((c=*p++))
{
case '!': m_t << "\"!"; break;
case '"': m_t << "\"\""; break;
case '@': m_t << "\"@"; break;
case '|': m_t << "\\texttt{\"|}"; break;
case '[': m_t << "["; break;
case ']': m_t << "]"; break;
case '{': m_t << "\\lcurly{}"; break;
case '}': m_t << "\\rcurly{}"; break;
default: str[0]=c; filter(str); break;
switch (c)
{
case '!': m_t << "\"!"; break;
case '"': m_t << "\"\""; break;
case '@': m_t << "\"@"; break;
case '|': m_t << "\\texttt{\"|}"; break;
case '[': m_t << "["; break;
case ']': m_t << "]"; break;
case '{': m_t << "\\lcurly{}"; break;
case '}': m_t << "\\rcurly{}"; break;
default: str[0]=c; filter(str); break;
}
}
}
return result;

0 comments on commit 653a2a8

Please sign in to comment.