From: David Kastrup Date: Thu, 1 Nov 2012 12:40:11 +0000 (+0100) Subject: Issue 2997: parser.yy: avoid premature work in make_music_from_simple X-Git-Tag: release/2.17.9-1~20 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=95384d8b2e945321b7b9ada861d38660c55dbd4f;p=lilypond.git Issue 2997: parser.yy: avoid premature work in make_music_from_simple --- diff --git a/lily/parser.yy b/lily/parser.yy index b0ae0a53dc..0804ce575b 100644 --- a/lily/parser.yy +++ b/lily/parser.yy @@ -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,