diff --git a/mscore-3.2.3-aeolus.patch b/mscore-3.2.3-aeolus.patch deleted file mode 100644 index 310fefc..0000000 --- a/mscore-3.2.3-aeolus.patch +++ /dev/null @@ -1,112 +0,0 @@ ---- MuseScore-3.2.3/aeolus/aeolus.cpp.orig 2019-07-06 03:46:43.000000000 -0600 -+++ MuseScore-3.2.3/aeolus/aeolus.cpp 2019-07-16 14:54:18.657847983 -0600 -@@ -257,10 +257,11 @@ SynthesizerGroup Aeolus::state() const - // setState - //--------------------------------------------------------- - --void Aeolus::setState(const SynthesizerGroup& g) -+bool Aeolus::setState(const SynthesizerGroup& g) - { - for (const IdValue& v : g) - setValue(v.id, v.data.toDouble()); -+ return true; - } - - //--------------------------------------------------------- ---- MuseScore-3.2.3/aeolus/aeolus.h.orig 2019-07-06 03:46:43.000000000 -0600 -+++ MuseScore-3.2.3/aeolus/aeolus.h 2019-07-16 15:21:31.035742820 -0600 -@@ -109,7 +109,7 @@ class Aeolus : public Synthesizer { - virtual double masterTuning() const; - - virtual bool loadSoundFonts(const QStringList&) { return true; } -- virtual QStringList soundFonts() const { return QStringList(); } -+ virtual std::vector soundFontsInfo() const { std::vector sl; return sl; } - - virtual void process(unsigned, float*, float*, float*); - virtual void play(const PlayEvent&); -@@ -118,7 +118,7 @@ class Aeolus : public Synthesizer { - - // get/set synthesizer state - virtual SynthesizerGroup state() const; -- virtual void setState(const SynthesizerGroup&); -+ virtual bool setState(const SynthesizerGroup&); - - virtual void allSoundsOff(int channel) { allNotesOff(channel); } - virtual void allNotesOff(int /*channel*/); ---- MuseScore-3.2.3/aeolus/model.cpp.orig 2019-07-06 03:46:43.000000000 -0600 -+++ MuseScore-3.2.3/aeolus/model.cpp 2019-07-16 16:14:33.561396793 -0600 -@@ -745,7 +745,7 @@ int Model::write_instr() - Ifelm *I; - Addsynth *A; - -- sprintf (buff, "%s/definition", _instr); -+ snprintf (buff, sizeof(buff), "%s/definition", _instr); - if (! (F = fopen (buff, "w"))) - { - fprintf (stderr, "Can't open '%s' for writing\n", buff); -@@ -963,7 +963,7 @@ bool Model::writePresets() - uchar data [256]; - FILE *F; - -- sprintf (name, "%s/presets", _instr); -+ snprintf (name, sizeof(name), "%s/presets", _instr); - if (! (F = fopen (name, "w"))) { - fprintf (stderr, "Can't open '%s' for writing\n", name); - return 1; ---- MuseScore-3.2.3/aeolus/sparm.cpp.orig 2019-07-06 03:46:43.000000000 -0600 -+++ MuseScore-3.2.3/aeolus/sparm.cpp 2019-07-16 15:53:32.130620967 -0600 -@@ -110,12 +110,12 @@ bool SyntiParameterData::operator==(cons - // write - //--------------------------------------------------------- - --void SyntiParameterData::write(Xml& xml) const -+void SyntiParameterData::write(XmlWriter& xml) const - { - if (_type == SP_FLOAT) - xml.tagE(QString("f name=\"%1\" val=\"%3\"").arg(_name).arg(_fval)); - else if (_type == SP_STRING) -- xml.tagE(QString("s name=\"%1\" val=\"%3\"").arg(_name).arg(Xml::xmlString(_sval))); -+ xml.tagE(QString("s name=\"%1\" val=\"%3\"").arg(_name).arg(XmlWriter::xmlString(_sval))); - } - - //--------------------------------------------------------- -@@ -189,7 +189,7 @@ SyntiParameterType SyntiParameter::type( - // write - //--------------------------------------------------------- - --void SyntiParameter::write(Xml& xml) const -+void SyntiParameter::write(XmlWriter& xml) const - { - d->write(xml); - } ---- MuseScore-3.2.3/aeolus/sparm.h.orig 2019-07-06 03:46:43.000000000 -0600 -+++ MuseScore-3.2.3/aeolus/sparm.h 2019-07-16 15:53:06.410069360 -0600 -@@ -21,7 +21,7 @@ - #define __SPARM_H__ - - namespace Ms { -- class Xml; -+ class XmlWriter; - class Synth; - } - -@@ -54,7 +54,7 @@ class SyntiParameter { - - SyntiParameterType type() const; - -- void write(Ms::Xml&) const; -+ void write(Ms::XmlWriter&) const; - - const QString& name() const; - void setName(const QString& s); ---- MuseScore-3.2.3/aeolus/sparm_p.h.orig 2019-07-06 03:46:43.000000000 -0600 -+++ MuseScore-3.2.3/aeolus/sparm_p.h 2019-07-16 15:52:27.280745576 -0600 -@@ -70,7 +70,7 @@ class SyntiParameterData : public QShare - SyntiParameterData(int id, const QString& name, const QString& val); - SyntiParameterData(const SyntiParameterData& pd); - -- virtual void write(Ms::Xml&) const; -+ virtual void write(Ms::XmlWriter&) const; - virtual bool operator==(const SyntiParameterData&) const; - virtual void print() const; - diff --git a/mscore-3.3.0-aeolus.patch b/mscore-3.3.0-aeolus.patch new file mode 100644 index 0000000..429cd82 --- /dev/null +++ b/mscore-3.3.0-aeolus.patch @@ -0,0 +1,168 @@ +--- MuseScore-3.3.2/aeolus/aeolus.cpp.orig 2019-11-14 00:56:37.000000000 -0700 ++++ MuseScore-3.3.2/aeolus/aeolus.cpp 2019-11-21 12:41:43.437378783 -0700 +@@ -52,32 +52,46 @@ Synthesizer* createAeolus() + // Aeolus + //--------------------------------------------------------- + +-Aeolus::Aeolus() ++Aeolus::Aeolus() : Synthesizer() + { +- model = 0; ++ model = nullptr; + patchList.append(new MidiPatch { false, "Aeolus", 0, 0, 0, "Aeolus" }); + + _sc_cmode = 0; + _sc_group = 0; + _running = false; ++ _hold = 0; + _nplay = 0; +- _fsamp = 0; + _nasect = 0; + _ndivis = 0; ++ _revsize = 0.0f; ++ _revtime = 0.0f; + nout = 0; +- _ifc_init = 0; +- for (int i = 0; i < NGROUP; i++) +- _ifelms [i] = 0; ++ _fsamp = 0.0f; ++ _fsize = 0; ++ _ifc_init = nullptr; ++ memset(_midimap, 0, sizeof(_midimap)); ++ memset(_asectp, 0, sizeof(_asectp)); ++ memset(_divisp, 0, sizeof(_divisp)); + memset(_keymap, 0, sizeof(_keymap)); ++ memset(_audiopar, 0, sizeof(_audiopar)); ++ memset(routb, 0, sizeof(routb)); ++ memset(loutb, 0, sizeof(loutb)); ++ memset(_asectpar, 0, sizeof(_asectpar)); ++ memset(_ifelms, 0, sizeof(_ifelms)); ++ memset(_tempstr, 0, sizeof(_tempstr)); + } + + Aeolus::~Aeolus() + { +- delete model; ++ if (model != nullptr) ++ delete model; + for (int i = 0; i < _nasect; i++) +- delete _asectp [i]; ++ if (_asectp [i] != nullptr) ++ delete _asectp [i]; + for (int i = 0; i < _ndivis; i++) +- delete _divisp [i]; ++ if (_divisp [i] != nullptr) ++ delete _divisp [i]; + } + + //--------------------------------------------------------- +@@ -257,10 +271,11 @@ SynthesizerGroup Aeolus::state() const + // setState + //--------------------------------------------------------- + +-void Aeolus::setState(const SynthesizerGroup& g) ++bool Aeolus::setState(const SynthesizerGroup& g) + { + for (const IdValue& v : g) + setValue(v.id, v.data.toDouble()); ++ return true; + } + + //--------------------------------------------------------- +--- MuseScore-3.3.2/aeolus/aeolus.h.orig 2019-11-14 00:56:37.000000000 -0700 ++++ MuseScore-3.3.2/aeolus/aeolus.h 2019-11-21 12:18:54.840326983 -0700 +@@ -109,7 +109,7 @@ class Aeolus : public Synthesizer { + virtual double masterTuning() const; + + virtual bool loadSoundFonts(const QStringList&) { return true; } +- virtual QStringList soundFonts() const { return QStringList(); } ++ virtual std::vector soundFontsInfo() const { std::vector sl; return sl; } + + virtual void process(unsigned, float*, float*, float*); + virtual void play(const PlayEvent&); +@@ -118,7 +118,7 @@ class Aeolus : public Synthesizer { + + // get/set synthesizer state + virtual SynthesizerGroup state() const; +- virtual void setState(const SynthesizerGroup&); ++ virtual bool setState(const SynthesizerGroup&); + + virtual void allSoundsOff(int channel) { allNotesOff(channel); } + virtual void allNotesOff(int /*channel*/); +--- MuseScore-3.3.2/aeolus/model.cpp.orig 2019-11-14 00:56:37.000000000 -0700 ++++ MuseScore-3.3.2/aeolus/model.cpp 2019-11-21 12:18:54.841326969 -0700 +@@ -745,7 +745,7 @@ int Model::write_instr() + Ifelm *I; + Addsynth *A; + +- sprintf (buff, "%s/definition", _instr); ++ snprintf (buff, sizeof(buff), "%s/definition", _instr); + if (! (F = fopen (buff, "w"))) + { + fprintf (stderr, "Can't open '%s' for writing\n", buff); +@@ -963,7 +963,7 @@ bool Model::writePresets() + uchar data [256]; + FILE *F; + +- sprintf (name, "%s/presets", _instr); ++ snprintf (name, sizeof(name), "%s/presets", _instr); + if (! (F = fopen (name, "w"))) { + fprintf (stderr, "Can't open '%s' for writing\n", name); + return 1; +--- MuseScore-3.3.2/aeolus/sparm.cpp.orig 2019-11-14 00:56:37.000000000 -0700 ++++ MuseScore-3.3.2/aeolus/sparm.cpp 2019-11-21 12:18:54.841326969 -0700 +@@ -110,12 +110,12 @@ bool SyntiParameterData::operator==(cons + // write + //--------------------------------------------------------- + +-void SyntiParameterData::write(Xml& xml) const ++void SyntiParameterData::write(XmlWriter& xml) const + { + if (_type == SP_FLOAT) + xml.tagE(QString("f name=\"%1\" val=\"%3\"").arg(_name).arg(_fval)); + else if (_type == SP_STRING) +- xml.tagE(QString("s name=\"%1\" val=\"%3\"").arg(_name).arg(Xml::xmlString(_sval))); ++ xml.tagE(QString("s name=\"%1\" val=\"%3\"").arg(_name).arg(XmlWriter::xmlString(_sval))); + } + + //--------------------------------------------------------- +@@ -189,7 +189,7 @@ SyntiParameterType SyntiParameter::type( + // write + //--------------------------------------------------------- + +-void SyntiParameter::write(Xml& xml) const ++void SyntiParameter::write(XmlWriter& xml) const + { + d->write(xml); + } +--- MuseScore-3.3.2/aeolus/sparm.h.orig 2019-11-14 00:56:37.000000000 -0700 ++++ MuseScore-3.3.2/aeolus/sparm.h 2019-11-21 12:18:54.841326969 -0700 +@@ -21,7 +21,7 @@ + #define __SPARM_H__ + + namespace Ms { +- class Xml; ++ class XmlWriter; + class Synth; + } + +@@ -54,7 +54,7 @@ class SyntiParameter { + + SyntiParameterType type() const; + +- void write(Ms::Xml&) const; ++ void write(Ms::XmlWriter&) const; + + const QString& name() const; + void setName(const QString& s); +--- MuseScore-3.3.2/aeolus/sparm_p.h.orig 2019-11-14 00:56:37.000000000 -0700 ++++ MuseScore-3.3.2/aeolus/sparm_p.h 2019-11-21 12:18:54.841326969 -0700 +@@ -70,7 +70,7 @@ class SyntiParameterData : public QShare + SyntiParameterData(int id, const QString& name, const QString& val); + SyntiParameterData(const SyntiParameterData& pd); + +- virtual void write(Ms::Xml&) const; ++ virtual void write(Ms::XmlWriter&) const; + virtual bool operator==(const SyntiParameterData&) const; + virtual void print() const; + diff --git a/mscore.spec b/mscore.spec index 97b0ff6..b191414 100644 --- a/mscore.spec +++ b/mscore.spec @@ -4,7 +4,7 @@ Name: mscore Summary: Music Composition & Notation Software Version: %{shortver}.2 -Release: 1%{?dist} +Release: 2%{?dist} # rtf2html is LGPLv2+ # paper4.png paper5.png are LGPLv3 # the rest is GPLv2 @@ -30,7 +30,7 @@ Patch2: mscore-3.2.3-fix-qmake-path.patch # steinberg-bravura{,-text}-fonts Patch3: mscore-3.3.0-unbundle.patch # Fix some glitches in the aeolus code -Patch4: mscore-3.2.3-aeolus.patch +Patch4: mscore-3.3.0-aeolus.patch BuildRequires: cmake BuildRequires: desktop-file-utils @@ -294,6 +294,9 @@ rm -fr %{buildroot}%{_prefix}/lib %{_datadir}/appdata/%{fontfamilyname}.metainfo.xml %changelog +* Fri Nov 22 2019 Jerry James - 3.3.2-2 +- Fix segfault in the aeolus destructor + * Thu Nov 14 2019 Jerry James - 3.3.2-1 - Version 3.3.2