In general, the metrics() functions should not change the Buffer; we have 
updateBuffer/updateMacros for that purpose.
---
 src/mathed/MathMacroTemplate.cpp |    8 ++------
 src/mathed/MathMacroTemplate.h   |    4 ++--
 2 files changed, 4 insertions(+), 8 deletions(-)

diff --git a/src/mathed/MathMacroTemplate.cpp b/src/mathed/MathMacroTemplate.cpp
index e82de01..62c681b 100644
--- a/src/mathed/MathMacroTemplate.cpp
+++ b/src/mathed/MathMacroTemplate.cpp
@@ -465,7 +465,7 @@ docstring MathMacroTemplate::name() const
 }
 
 
-void MathMacroTemplate::updateToContext(MacroContext const & mc) const
+void MathMacroTemplate::updateToContext(MacroContext const & mc)
 {
        redefinition_ = mc.get(name()) != 0;
 }
@@ -551,13 +551,9 @@ void MathMacroTemplate::metrics(MetricsInfo & mi, 
Dimension & dim) const
 
        // valid macro?
        MacroData const * macro = 0;
-       if (validName()) {
+       if (validName())
                macro = mi.macrocontext.get(name());
 
-               // updateToContext() - avoids another lookup
-               redefinition_ = macro != 0;
-       }
-
        // update look?
        int argsInDef = maxArgumentInDefinition();
        if (lookOutdated_ || argsInDef != argsInLook_) {
diff --git a/src/mathed/MathMacroTemplate.h b/src/mathed/MathMacroTemplate.h
index 61f82e9..0bb3d4d 100644
--- a/src/mathed/MathMacroTemplate.h
+++ b/src/mathed/MathMacroTemplate.h
@@ -87,7 +87,7 @@ public:
        virtual void validate(LaTeXFeatures &) const;
 
        /// decide whether its a redefinition
-       void updateToContext(MacroContext const & mc) const;
+       void updateToContext(MacroContext const & mc);
 
        ///
        void draw(PainterInfo & pi, int x, int y) const;
@@ -164,7 +164,7 @@ private:
        /// (re)newcommand or def
        mutable MacroType type_;
        /// defined before already?
-       mutable bool redefinition_;
+       bool redefinition_;
        ///
        void createLook(int args) const;
        ///
-- 
1.7.9.5

Reply via email to