lilypond-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Fix crash when unknown grob name is passed to ly:engraver-make-grob (iss


From: plroskin
Subject: Fix crash when unknown grob name is passed to ly:engraver-make-grob (issue 5715053)
Date: Thu, 01 Mar 2012 23:02:57 +0000

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;






reply via email to

[Prev in Thread] Current Thread [Next in Thread]