Created this file in 3.6, opens fine, won't open in 4 (crashes)

• May 24, 2025 - 10:53

Please see attached

Attachment Size
Haec dies Morley.mscz 24.66 KB

Comments

I exported the score as MusicXML, which then imported into MuseScore Studio 4.5.2 without problems.

The crash is possibly because you used Staff text for the composer details? This showed up because a sound flag was generated for the composer name in MuseScore 4.5.2. It's much better to add the Composer details to the Title frame with Add > Composer.

Attachment Size
Haec dies Morley - MuseScore 4-5-2.mscz 75.39 KB

In reply to by Jojo-Schmitz

I just got home now, and I missed the whole nice discussion. I don't understand one thing: is the invitation to report the hypothetical problem to GitHub addressed to me? I don't know if it's a bug in the program or some careless 'maneuver' by the user, so I wouldn't even know what to report. If it's not like that, ignore what I just wrote.

The problem, at the mscx file level, was generated in the 'Volta' indications; once this was corrected, the score also opened in version 4.5.2.
To avoid further problems I suggest deleting all improper 'Volta' indications. These indications must be only on the topmost staff.

Attachment Size
Haec dies Morley 4_5_2.mscz 76.92 KB

In reply to by Jojo-Schmitz

It crashes here:

        } else if (segment->segmentType() & SegmentType::BarLineType) {
            BarLine* barLine = toBarLine(segment->elementAt(track()));
            if (barLine->barLineType() == BarLineType::END_REPEAT || barLine->barLineType() == BarLineType::END_START_REPEAT) { // <<<<<
                x += symWidth(SymId::repeatDot) + style().styleMM(Sid::repeatBarlineDotSeparation);
            }
            x += 0.5 * absoluteFromSpatium(lineWidth());
        }

barline being a nullptr
bandaid fix:

        } else if (segment->segmentType() & SegmentType::BarLineType) {
            BarLine* barLine = toBarLine(segment->elementAt(track()));
            if (barLine && (barLine->barLineType() == BarLineType::END_REPEAT || barLine->barLineType() == BarLineType::END_START_REPEAT)) {
                x += symWidth(SymId::repeatDot) + style().styleMM(Sid::repeatBarlineDotSeparation);
            }
            x += 0.5 * absoluteFromSpatium(lineWidth());
        }

But that results in too large a gap between the end of the volta and the repeat barline:
Screenshot 2025-05-24 191012.png
Bad hack fix for that:

        } else if (segment->segmentType() & SegmentType::BarLineType) {
            BarLine* barLine = toBarLine(segment->elementAt(track()));
            if (!barLine || (barLine->barLineType() == BarLineType::END_REPEAT || barLine->barLineType() == BarLineType::END_START_REPEAT)) {
                x += symWidth(SymId::repeatDot) + style().styleMM(Sid::repeatBarlineDotSeparation);
            }
            x += 0.5 * absoluteFromSpatium(lineWidth());
        }

Do you still have an unanswered question? Please log in first to post your question.