Index: lily/music.cc
diff --git a/lily/music.cc b/lily/music.cc
index cbae4916b6542db8195d41599b37d17d89cfeab4..c70ce07c69aaa33bf80ea5d476905b22262e2d69 100644
--- a/lily/music.cc
+++ b/lily/music.cc
@@ -85,9 +85,6 @@ Music::Music (Music const &m)
{
length_callback_ = m.length_callback_;
start_callback_ = m.start_callback_;
-
- /// why?
- set_spot (*m.origin ());
}
Moment
Index: lily/prob.cc
diff --git a/lily/prob.cc b/lily/prob.cc
index d05a33e4f3aa60387ad40a612deaf01a6d952a54..8c7bd47dac698931e8b4b80e45d063a530d8aaa9 100644
--- a/lily/prob.cc
+++ b/lily/prob.cc
@@ -55,23 +55,34 @@ Prob::equal_p (SCM sa, SCM sb)
SCM aprop = props[0][i];
SCM bprop = props[1][i];
- for (;
- scm_is_pair (aprop) && scm_is_pair (bprop);
- aprop = scm_cdr (aprop), bprop = scm_cdr (bprop))
+ for (;; aprop = scm_cdr (aprop), bprop = scm_cdr (bprop))
{
+ SCM origin_sym = ly_symbol2scm ("origin");
+ // Skip over origin fields
+ while (scm_is_pair (aprop)
+ && scm_is_eq (origin_sym, scm_caar (aprop)))
+ aprop = scm_cdr (aprop);
+
+ while (scm_is_pair (bprop)
+ && scm_is_eq (origin_sym, scm_caar (bprop)))
+ bprop = scm_cdr (bprop);
+
+ /* is one list shorter? */
+ if (!scm_is_pair (aprop))
+ if (!scm_is_pair (bprop))
+ break;
+ else
+ return SCM_BOOL_F;
+ else if (!scm_is_pair (bprop))
+ return SCM_BOOL_F;
+
SCM aval = scm_cdar (aprop);
SCM bval = scm_cdar (bprop);
if (!scm_is_eq (scm_caar (aprop), scm_caar (bprop))
- || (!(unsmob (aval) && unsmob (bval))
- && !ly_is_equal (aval, bval)))
+ || !ly_is_equal (aval, bval))
return SCM_BOOL_F;
}
-
- /* is one list shorter? */
- if (!scm_is_null (aprop) || !scm_is_null (bprop))
- return SCM_BOOL_F;
}
-
return SCM_BOOL_T;
}