Reviewers: ,
Message:
I've seen it many times that Lilypond would crash during my experiments
with Scheme code. This time I decided to track it down. It's my first
ever fix to the C++ code in Lilypond, so please check my coding style.
Description:
Fix crash when unknown grob name is passed to ly:engraver-make-grob
Please review this at http://codereview.appspot.com/5715053/
Affected files:
M lily/engraver-scheme.cc
M lily/engraver.cc
Index: lily/engraver-scheme.cc
diff --git a/lily/engraver-scheme.cc b/lily/engraver-scheme.cc
index
8789171d7eafdd640c573c5b19cbd46ee3685102..bfc40f613cab8928f383f9a383c9e0b76d87fb51
100644
--- a/lily/engraver-scheme.cc
+++ b/lily/engraver-scheme.cc
@@ -35,7 +35,13 @@ LY_DEFINE
(ly_engraver_make_grob, "ly:engraver-make-grob",
internal_make_grob (grob_name, cause,
ly_symbol2string (grob_name).c_str (),
"scheme", 0, "scheme");
- return g->self_scm ();
+ if (g)
+ return g->self_scm ();
+ else
+ {
+ programming_error ("cannot create grob");
+ return SCM_EOL;
+ }
}
LY_DEFINE (ly_engraver_announce_end_grob, "ly:engraver-announce-end-grob",
Index: lily/engraver.cc
diff --git a/lily/engraver.cc b/lily/engraver.cc
index
b8bf1234c04d625fe36c635c38aa3bad1a24c85b..e0da6d96e8dc042c9c38f0c0a37eff8a81abd75c
100644
--- a/lily/engraver.cc
+++ b/lily/engraver.cc
@@ -118,6 +118,8 @@ Engraver::internal_make_grob (SCM symbol,
#endif
SCM props = updated_grob_properties (context (), symbol);
+ if (props == SCM_EOL)
+ return 0;
Grob *grob = 0;
_______________________________________________
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel