New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Issue 3304 #2
Issue 3304 #2
Conversation
Start with a basic spring based on the note duration, and apply optical corrections to that. This results in more consistent springs thus more uniform stretching in polyphonic situations.
Comments implied that half the width of accidentals, etc., was added to the ideal spacing between notes, but in fact only compressibility was affected. The non-uniform compressibility caused note-spacing to become non-uniform when the lines were compressed. For example A sequence {\stemUp a a d a] would have the head of the D tuck under the preceding A. This commit keeps spacing uniform on compressed lines until objects come within padding of each other.
Hi Keith, I'm not sure how to proceed here. |
Oh my, i see i didn't reply to this pull request... Sorry again :( I'm closing the pull request since the patches was merged in an "ordinary" manner already. |
With Guile 2.2, it's possible to observe crashes like #0 std::vector<Grob*, std::allocator<Grob*> >::size() const (this=0x0) #1 System::derived_mark() const (this=0x556efd94f460) at [...]/lily/system.cc:113 #2 0x0000556ef6b08f25 in Grob::mark_smob() const (this=0x556efd94f460) #3 to #10 in libguile-2.2.so.1 and libgc.so.1 #11 0x00007f0e322bc875 in scm_i_new_smob () #12 0x0000556ef6b0100b in scm_new_smob (data=93935189161312, tc=13943) #13 Smob_base<Grob_array>::register_ptr(Grob_array*) (p=0x556efd94f560) #14 Simple_smob<Grob_array>::smobbed_copy() const (this=<synthetic pointer>) #15 Grob_array::make_array() #16 0x0000556ef6c72bdf in System::init_elements() (this=0x556efd94f460) #17 0x0000556ef6bfb3f9 in Score_engraver::initialize() (this=0x556efc946cd0) In this case, System::init_elements() calls Grob_array::make_array() to later initialize all_elements_, which is consequently 0 until then.
With Guile 2.2, it's possible to observe crashes like #0 System::derived_mark() const (this=0x55bd0b6a3730) at [...]/lily/include/smobs.hh:321 #1 0x000055bd05f62f25 in Grob::mark_smob() const (this=0x55bd0b6a3730) #2 to #9 in libguile-2.2.so.1 and libgc.so.1 #10 0x00007f5ed5bfe875 in scm_i_new_smob () #11 0x000055bd05f5b00b in scm_new_smob (data=94270412975808, tc=13943) #12 Smob_base<Grob_array>::register_ptr(Grob_array*) (p=0x55bd0a7a6ec0) #13 Simple_smob<Grob_array>::smobbed_copy() const (this=<synthetic pointer>) #14 Grob_array::make_array() #15 0x000055bd060ccbdf in System::init_elements() (this=0x55bd0b6a3730) #16 0x000055bd060553f9 in Score_engraver::initialize() (this=0x55bd08b51ed0) The reason is that System::System (SCM) did not initialize the pscore_ field and relied on Paper_score::typeset () to fill in the data. When a GC happens between the two steps, System::derived_mark () calls self_scm () (at lily/include/smobs.hh:321) on an uninitialized pointer.
With Guile 2.2, it's possible to observe crashes like #0 std::vector<Grob*, std::allocator<Grob*> >::size() const (this=0x0) #1 System::derived_mark() const (this=0x556efd94f460) at [...]/lily/system.cc:113 #2 0x0000556ef6b08f25 in Grob::mark_smob() const (this=0x556efd94f460) #3 to #10 in libguile-2.2.so.1 and libgc.so.1 #11 0x00007f0e322bc875 in scm_i_new_smob () #12 0x0000556ef6b0100b in scm_new_smob (data=93935189161312, tc=13943) #13 Smob_base<Grob_array>::register_ptr(Grob_array*) (p=0x556efd94f560) #14 Simple_smob<Grob_array>::smobbed_copy() const (this=<synthetic pointer>) #15 Grob_array::make_array() #16 0x0000556ef6c72bdf in System::init_elements() (this=0x556efd94f460) #17 0x0000556ef6bfb3f9 in Score_engraver::initialize() (this=0x556efc946cd0) In this case, System::init_elements() calls Grob_array::make_array() to later initialize all_elements_, which is consequently 0 until then. (cherry picked from commit aacb2da)
With Guile 2.2, it's possible to observe crashes like #0 System::derived_mark() const (this=0x55bd0b6a3730) at [...]/lily/include/smobs.hh:321 #1 0x000055bd05f62f25 in Grob::mark_smob() const (this=0x55bd0b6a3730) #2 to #9 in libguile-2.2.so.1 and libgc.so.1 #10 0x00007f5ed5bfe875 in scm_i_new_smob () #11 0x000055bd05f5b00b in scm_new_smob (data=94270412975808, tc=13943) #12 Smob_base<Grob_array>::register_ptr(Grob_array*) (p=0x55bd0a7a6ec0) #13 Simple_smob<Grob_array>::smobbed_copy() const (this=<synthetic pointer>) #14 Grob_array::make_array() #15 0x000055bd060ccbdf in System::init_elements() (this=0x55bd0b6a3730) #16 0x000055bd060553f9 in Score_engraver::initialize() (this=0x55bd08b51ed0) The reason is that System::System (SCM) did not initialize the pscore_ field and relied on Paper_score::typeset () to fill in the data. When a GC happens between the two steps, System::derived_mark () calls self_scm () (at lily/include/smobs.hh:321) on an uninitialized pointer. (cherry picked from commit 5fc9757)
No description provided.