]> git.donarmstrong.com Git - lilypond.git/commitdiff
Issue 2997: parser.yy: avoid premature work in make_music_from_simple
authorDavid Kastrup <dak@gnu.org>
Thu, 1 Nov 2012 12:40:11 +0000 (13:40 +0100)
committerDavid Kastrup <dak@gnu.org>
Mon, 3 Dec 2012 13:46:27 +0000 (14:46 +0100)
lily/parser.yy

index b0ae0a53dce998e80a4399d71c9593aae1779d05..0804ce575b59f240ff3b43fcd1487ad7c9511fe0 100644 (file)
@@ -3642,17 +3642,19 @@ make_music_from_simple (Lily_parser *parser, Input loc, SCM simple)
        if (unsmob_music (simple))
                return simple;
        if (parser->lexer_->is_note_state ()) {
-               Music *n = MY_MAKE_MUSIC ("NoteEvent", loc);
-               n->set_property ("duration", parser->default_duration_.smobbed_copy ());
-               if (scm_is_symbol (simple))
+               if (scm_is_symbol (simple)) {
+                       Music *n = MY_MAKE_MUSIC ("NoteEvent", loc);
+                       n->set_property ("duration", parser->default_duration_.smobbed_copy ());
                        n->set_property ("drum-type", simple);
-               else if (unsmob_pitch (simple))
+                       return n->unprotect ();
+               }
+               if (unsmob_pitch (simple)) {
+                       Music *n = MY_MAKE_MUSIC ("NoteEvent", loc);
+                       n->set_property ("duration", parser->default_duration_.smobbed_copy ());
                        n->set_property ("pitch", simple);
-               else {
-                       n->unprotect ();
-                       return simple;
+                       return n->unprotect ();
                }
-               return n->unprotect ();
+               return simple;
        } else if (parser->lexer_->is_lyric_state ()) {
                if (Text_interface::is_markup (simple))
                        return MAKE_SYNTAX ("lyric-event", loc, simple,