From 6f7c6e4dac49f0ccd29bc472448ae77a8ab9fddc Mon Sep 17 00:00:00 2001 From: Randy Heit <rheit@zdoom.fake> Date: Sun, 11 May 2008 01:26:28 +0000 Subject: [PATCH] - Fixed: Need write barriers when modifying SequenceListHead. SVN r962 (trunk) --- docs/rh-log.txt | 3 +++ src/s_sndseq.cpp | 8 ++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/docs/rh-log.txt b/docs/rh-log.txt index 9cf68192c..10f843fc9 100644 --- a/docs/rh-log.txt +++ b/docs/rh-log.txt @@ -1,3 +1,6 @@ +May 10, 2008 +- Fixed: Need write barriers when modifying SequenceListHead. + May 9, 2008 - Added a new cvar: midi_timiditylike. This re-enables TiMidity handling of GUS patch flags, envelopes, and volume levels, while trying to be closer diff --git a/src/s_sndseq.cpp b/src/s_sndseq.cpp index 282e5961a..e487c9d54 100644 --- a/src/s_sndseq.cpp +++ b/src/s_sndseq.cpp @@ -335,7 +335,10 @@ void DSeqNode::Destroy() m_ParentSeqNode = NULL; } if (SequenceListHead == this) + { SequenceListHead = m_Next; + GC::WriteBarrier(m_Next); + } if (m_Prev) { m_Prev->m_Next = m_Next; @@ -716,11 +719,12 @@ DSeqNode::DSeqNode (int sequence, int modenum) } else { - SequenceListHead->m_Prev = this; - m_Next = SequenceListHead; + SequenceListHead->m_Prev = this; GC::WriteBarrier(SequenceListHead->m_Prev, this); + m_Next = SequenceListHead; GC::WriteBarrier(this, SequenceListHead); SequenceListHead = this; m_Prev = NULL; } + GC::WriteBarrier(this); m_ParentSeqNode = m_ChildSeqNode = NULL; }