@@ -871,7 +871,13 @@ void Segment::remove(EngravingItem* el)
871871 case ElementType::CHORD:
872872 case ElementType::REST:
873873 {
874- m_elist[track] = 0 ;
874+ // Only clear the slot if it actually holds the element being removed.
875+ // During linked-score propagation, an AddElement for a new ChordRest may
876+ // have already overwritten this slot; blindly zeroing it would silently
877+ // discard the new element and leave a gap in voice 0 (see #18437).
878+ if (m_elist[track] == el) {
879+ m_elist[track] = 0 ;
880+ }
875881 staff_idx_t staffIdx = el->staffIdx ();
876882 measure ()->checkMultiVoices (staffIdx);
877883 // spanners with this cr as start or end element will need relayout
@@ -898,7 +904,9 @@ void Segment::remove(EngravingItem* el)
898904 case ElementType::MMREST:
899905 case ElementType::MEASURE_REPEAT:
900906 case ElementType::TIME_TICK_ANCHOR:
901- m_elist[track] = 0 ;
907+ if (m_elist[track] == el) {
908+ m_elist[track] = 0 ;
909+ }
902910 break ;
903911
904912 case ElementType::HARMONY:
@@ -962,12 +970,16 @@ void Segment::remove(EngravingItem* el)
962970 break ;
963971
964972 case ElementType::TIMESIG:
965- m_elist[track] = 0 ;
973+ if (m_elist[track] == el) {
974+ m_elist[track] = 0 ;
975+ }
966976 el->staff ()->removeTimeSig (toTimeSig (el));
967977 break ;
968978
969979 case ElementType::KEYSIG:
970- m_elist[track] = 0 ;
980+ if (m_elist[track] == el) {
981+ m_elist[track] = 0 ;
982+ }
971983 if (!el->generated ()) {
972984 el->staff ()->removeKey (tick ());
973985 }
@@ -980,11 +992,15 @@ void Segment::remove(EngravingItem* el)
980992
981993 case ElementType::BAR_LINE:
982994 case ElementType::AMBITUS:
983- m_elist[track] = 0 ;
995+ if (m_elist[track] == el) {
996+ m_elist[track] = 0 ;
997+ }
984998 break ;
985999
9861000 case ElementType::BREATH:
987- m_elist[track] = 0 ;
1001+ if (m_elist[track] == el) {
1002+ m_elist[track] = 0 ;
1003+ }
9881004 score ()->setPause (tick (), 0 );
9891005 break ;
9901006
0 commit comments