Skip to content

Commit

Permalink
Bug 728530 - Crash on \addindex \term
Browse files Browse the repository at this point in the history
  • Loading branch information
Dimitri van Heesch committed Apr 19, 2014
1 parent 8ba739a commit 653a2a8
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 40 deletions.
43 changes: 23 additions & 20 deletions src/htmldocvisitor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
46 changes: 26 additions & 20 deletions src/latexdocvisitor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
Expand Down

0 comments on commit 653a2a8

Please sign in to comment.