From de3ed8db8b49638bd140830f6894a880fad8ef1b Mon Sep 17 00:00:00 2001 From: Robin Haberkorn Date: Fri, 8 Feb 2013 22:11:56 +0100 Subject: fixed ring.current/QRegisters::current corruption occurs when rubbing out a switch from q-reg string or to q-reg string --- src/qregisters.cpp | 8 ++++++++ src/qregisters.h | 7 +------ src/ring.h | 4 ++-- 3 files changed, 11 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/qregisters.cpp b/src/qregisters.cpp index b2987b3..6eea64f 100644 --- a/src/qregisters.cpp +++ b/src/qregisters.cpp @@ -56,6 +56,14 @@ namespace QRegisters { QRegisterTable *locals = NULL; QRegister *current = NULL; + void + undo_edit(void) + { + current->dot = interface.ssm(SCI_GETCURRENTPOS); + undo.push_var(ring.current); + undo.push_var(current)->undo_edit(); + } + static QRegisterStack stack; } diff --git a/src/qregisters.h b/src/qregisters.h index 651be1e..a5b20cb 100644 --- a/src/qregisters.h +++ b/src/qregisters.h @@ -357,12 +357,7 @@ namespace QRegisters { extern QRegisterTable *locals; extern QRegister *current; - static inline void - undo_edit(void) - { - current->dot = interface.ssm(SCI_GETCURRENTPOS); - undo.push_var(current)->undo_edit(); - } + void undo_edit(void); enum Hook { HOOK_ADD = 1, diff --git a/src/ring.h b/src/ring.h index 77843fe..608b752 100644 --- a/src/ring.h +++ b/src/ring.h @@ -208,8 +208,8 @@ public: undo_edit(void) { current->dot = interface.ssm(SCI_GETCURRENTPOS); - undo.push_var(current); - current->undo_edit(); + undo.push_var(QRegisters::current); + undo.push_var(current)->undo_edit(); } bool save(const gchar *filename); -- cgit v1.2.3