From: Carl Sorensen Date: Tue, 1 Dec 2009 00:09:37 +0000 (-0700) Subject: Fix 787 -- Eliminate segfaults due to empty list and unitialized properties X-Git-Tag: release/2.13.9-1~39 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=e0fce9de60caee831c581043e0c29fa7124d4ec2;p=lilypond.git Fix 787 -- Eliminate segfaults due to empty list and unitialized properties --- diff --git a/lily/script-column.cc b/lily/script-column.cc index 23e1b69b11..933bef5f1e 100644 --- a/lily/script-column.cc +++ b/lily/script-column.cc @@ -140,8 +140,14 @@ Script_column::order_grobs (vector grobs) ss = scm_stable_sort_x (ss, ly_grob_script_priority_less_proc); Grob *last = 0; - Grob *first = unsmob_grob (scm_car (ss)); - SCM default_outside_staff = first->get_property("outside-staff-priority"); + Grob *first = 0; + SCM default_outside_staff = scm_from_double (0); + // script_column may have no entries + if (scm_is_pair (ss)) + { + first = unsmob_grob (scm_car (ss)); + default_outside_staff = first-0>get_property ("outside-staff-priority"); + } for (SCM s = ss; scm_is_pair (s); s = scm_cdr (s)) { Grob *g = unsmob_grob (scm_car (s)); @@ -159,12 +165,13 @@ Script_column::order_grobs (vector grobs) SCM g_outside_staff = g->get_property ("outside-staff-priority"); if (!scm_is_number (g_outside_staff)) g->set_property ("outside-staff-priority", - scm_from_double (scm_to_double (last_outside_staff) + 0.1)); - else if (fabs (scm_to_double (g_outside_staff) - - scm_to_double(default_outside_staff)) < 0.001) + scm_from_double ( + scm_to_double (last_outside_staff) + 0.1)); + else if (scm_to_double (g_outside_staff) - + robust_scm2double (default_outside_staff, 0)) < 0.001) { SCM last_script = last->get_property ("script-priority"); - SCM g_script = g->get_property("script-priority"); + SCM g_script = g->get_property ("script-priority"); g->set_property ( "outside-staff-priority", scm_from_double (scm_to_double (last_outside_staff) +