From 95384d8b2e945321b7b9ada861d38660c55dbd4f Mon Sep 17 00:00:00 2001 From: David Kastrup Date: Thu, 1 Nov 2012 13:40:11 +0100 Subject: [PATCH] Issue 2997: parser.yy: avoid premature work in make_music_from_simple --- lily/parser.yy | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) 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, -- 2.39.2