]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/music-iterator.cc
Merge remote-tracking branch 'origin/translation'
[lilypond.git] / lily / music-iterator.cc
index c1603c8709f10353d739f6063228a22b982268cf..f6367db129620230d1d56be339a194a0a9f163d0 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2011 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
@@ -50,7 +50,7 @@ Music_iterator::~Music_iterator ()
 Context *
 Music_iterator::get_outlet () const
 {
-  return handle_.get_outlet ();
+  return handle_.get_context ();
 }
 
 void
@@ -178,7 +178,7 @@ Music_iterator::report_event (Music *m)
     FIXME: then don't do it.
   */
   if (!m->is_mus_type ("event"))
-    m->origin ()->programming_error (_ ("Sending non-event to context"));
+    m->origin ()->programming_error ("Sending non-event to context");
 
   m->send_to_context (get_outlet ());
 }
@@ -207,8 +207,11 @@ Music_iterator::mark_smob (SCM smob)
     Careful with GC, although we intend the following as pointers
     only, we _must_ mark them.
   */
-  if (mus->get_outlet ())
-    scm_gc_mark (mus->get_outlet ()->self_scm ());
+  /* Use handle_ directly as get_outlet is a virtual function and we
+     need to protect the context until Music_iterator::quit is being
+     run. */
+  if (mus->handle_.get_context ())
+    scm_gc_mark (mus->handle_.get_context ()->self_scm ());
   if (mus->music_)
     scm_gc_mark (mus->music_->self_scm ());