https://codereview.appspot.com/575990043/diff/577740043/lily/mutable-properties.cc File lily/mutable-properties.cc (right):
https://codereview.appspot.com/575990043/diff/577740043/lily/mutable-properties.cc#newcode50 lily/mutable-properties.cc:50: if (SCM_EQ_P (key (i), k)) On 2020/04/13 20:21:29, dak wrote: > scm_is_eq Done. https://codereview.appspot.com/575990043/diff/577740043/lily/mutable-properties.cc#newcode71 lily/mutable-properties.cc:71: if (SCM_EQ_P (key (i), k)) On 2020/04/13 20:21:28, dak wrote: > scm_is_eq Done. https://codereview.appspot.com/575990043/diff/577740043/lily/mutable-properties.cc#newcode97 lily/mutable-properties.cc:97: if (SCM_EQ_P (key (i), k)) On 2020/04/13 20:21:28, dak wrote: > scm_is_eq Done. https://codereview.appspot.com/575990043/diff/577740043/lily/mutable-properties.cc#newcode109 lily/mutable-properties.cc:109: Mutable_properties::mark () const On 2020/04/13 20:21:29, dak wrote: > This can segfault in GUILEv2 and/or depending on some other circumstances since > the C++ members are only getting initialized after the GC hook is already > operative. > > You need to sort the C++ structures potentially accessed by the GC hook into a > Preinit class (grep for Preinit for existing uses) and inherit from that before > inheriting from whatever operates the Smob. Then C++ guarantees an > initialisation order consistent with GC hook operation. I read the comment about this, but this only applies to derived classes, right? This is set in the Grob class, which is the base class, so the vector is init'd before smobify_self is called. https://codereview.appspot.com/575990043/