summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDimitri van Heesch <dimitri@stack.nl>2013-12-07 22:18:22 (GMT)
committerDimitri van Heesch <dimitri@stack.nl>2013-12-07 22:18:22 (GMT)
commit2da9dcc744acc01aaaf32ea486d59946e5fd9c37 (patch)
tree474ad8450ec795366bc41c7ee152b33ff00b3fd6 /src
parent182bd7cda2842cac622bf9ead4fd4a59f485d910 (diff)
downloadDoxygen-2da9dcc744acc01aaaf32ea486d59946e5fd9c37.zip
Doxygen-2da9dcc744acc01aaaf32ea486d59946e5fd9c37.tar.gz
Doxygen-2da9dcc744acc01aaaf32ea486d59946e5fd9c37.tar.bz2
Bug 711378 - Nested Aliases fail when the nested alias has two or more arguments.
Diffstat (limited to 'src')
-rw-r--r--src/util.cpp14
1 files changed, 7 insertions, 7 deletions
diff --git a/src/util.cpp b/src/util.cpp
index 6e7fa17..532d437 100644
--- a/src/util.cpp
+++ b/src/util.cpp
@@ -7014,7 +7014,7 @@ QCString parseCommentAsText(const Definition *scope,const MemberDef *md,
static QDict<void> aliasesProcessed;
-static QCString expandAliasRec(const QCString s);
+static QCString expandAliasRec(const QCString s,bool allowRecursion=FALSE);
struct Marker
{
@@ -7136,7 +7136,7 @@ static QCString replaceAliasArguments(const QCString &aliasValue,const QCString
//printf("part before marker %d: '%s'\n",i,aliasValue.mid(p,m->pos-p).data());
if (m->number>0 && m->number<=(int)args.count()) // valid number
{
- result+=*args.at(m->number-1);
+ result+=expandAliasRec(*args.at(m->number-1),TRUE);
//printf("marker index=%d pos=%d number=%d size=%d replacement %s\n",i,m->pos,m->number,m->size,
// args.at(m->number-1)->data());
}
@@ -7144,7 +7144,7 @@ static QCString replaceAliasArguments(const QCString &aliasValue,const QCString
}
result+=aliasValue.right(l-p); // append remainder
//printf("string after replacement of markers: '%s'\n",result.data());
-
+
// expand the result again
result = substitute(result,"\\{","{");
result = substitute(result,"\\}","}");
@@ -7175,7 +7175,7 @@ static QCString escapeCommas(const QCString &s)
return result.data();
}
-static QCString expandAliasRec(const QCString s)
+static QCString expandAliasRec(const QCString s,bool allowRecursion)
{
QCString result;
static QRegExp cmdPat("[\\\\@][a-z_A-Z][a-z_A-Z0-9]*");
@@ -7208,10 +7208,10 @@ static QCString expandAliasRec(const QCString s)
}
//printf("Found command s='%s' cmd='%s' numArgs=%d args='%s' aliasText=%s\n",
// s.data(),cmd.data(),numArgs,args.data(),aliasText?aliasText->data():"<none>");
- if (aliasesProcessed.find(cmd)==0 && aliasText) // expand the alias
+ if ((allowRecursion || aliasesProcessed.find(cmd)==0) && aliasText) // expand the alias
{
//printf("is an alias!\n");
- aliasesProcessed.insert(cmd,(void *)0x8);
+ if (!allowRecursion) aliasesProcessed.insert(cmd,(void *)0x8);
QCString val = *aliasText;
if (hasArgs)
{
@@ -7220,7 +7220,7 @@ static QCString expandAliasRec(const QCString s)
// aliasText->data(),val.data(),args.data());
}
result+=expandAliasRec(val);
- aliasesProcessed.remove(cmd);
+ if (!allowRecursion) aliasesProcessed.remove(cmd);
p=i+l;
if (hasArgs) p+=argsLen+2;
}