commit b610c13f67cc112f12ccdd5a793a1ed633c09e43 Author: Enrico Forestieri <for...@lyx.org> Date: Sat Jun 20 03:05:50 2015 +0200
Amend 98a5072a We only look once for the definition of the same macro, but we have to always check its arguments when the same macro appears more than once in a math inset. So, move earlier this check. diff --git a/src/mathed/InsetMathHull.cpp b/src/mathed/InsetMathHull.cpp index 0cfaad0..e1e339d 100644 --- a/src/mathed/InsetMathHull.cpp +++ b/src/mathed/InsetMathHull.cpp @@ -640,6 +640,9 @@ void InsetMathHull::usedMacros(MathData const & md, DocIterator const & pos, InsetMathGrid const * gi = md[i].nucleus()->asGridInset(); InsetMathNest const * ni = md[i].nucleus()->asNestInset(); if (mi) { + // Look for macros in the arguments of this macro. + for (idx_type idx = 0; idx < mi->nargs(); ++idx) + usedMacros(mi->cell(idx), pos, macros, defs); // Make sure this is a macro defined in the document // (as we also spot the macros in the symbols file) // or that we have not already accounted for it. @@ -647,9 +650,6 @@ void InsetMathHull::usedMacros(MathData const & md, DocIterator const & pos, if (macros.find(name) == end) continue; macros.erase(name); - // Look for macros in the arguments of this macro. - for (idx_type idx = 0; idx < mi->nargs(); ++idx) - usedMacros(mi->cell(idx), pos, macros, defs); // Look for macros in the definition of this macro. MathData ar(pos.buffer()); MacroData const * data =