From 402fcf51e5a567209b0293ef4e387315a8c5c2a4 Mon Sep 17 00:00:00 2001
From: David Kastrup <dak@gnu.org>
Date: Sat, 4 Jun 2016 17:41:05 +0200
Subject: [PATCH] Issue 4997/3: Use Preinit in Music

---
 lily/include/music.hh | 3 ++-
 lily/music.cc         | 8 ++++++--
 2 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/lily/include/music.hh b/lily/include/music.hh
index c904dc3347..32ca55babc 100644
--- a/lily/include/music.hh
+++ b/lily/include/music.hh
@@ -27,9 +27,10 @@
 
 #define is_mus_type(x) internal_is_music_type (ly_symbol2scm (x))
 
-class Music : public Prob
+class Music : public Preinit<Music>, public Prob
 {
 public:
+  void pre_init ();
   Music (SCM init);
   Music (Music const &m);
   VIRTUAL_COPY_CONSTRUCTOR (Music, Music);
diff --git a/lily/music.cc b/lily/music.cc
index bbf7fe4f58..994d685ed2 100644
--- a/lily/music.cc
+++ b/lily/music.cc
@@ -45,12 +45,16 @@ Music::internal_is_music_type (SCM k) const
   return scm_is_true (scm_c_memq (k, ifs));
 }
 
-Music::Music (SCM init)
-  : Prob (ly_symbol2scm ("Music"), init)
+void
+Music::pre_init ()
 {
   length_callback_ = SCM_EOL;
   start_callback_ = SCM_EOL;
+}
 
+Music::Music (SCM init)
+  : Prob (ly_symbol2scm ("Music"), init)
+{
   length_callback_ = get_property ("length-callback");
   if (!ly_is_procedure (length_callback_))
     length_callback_ = duration_length_callback_proc;
-- 
2.39.5