Fakematch JASTrack::TList::seqMain (#2940)

* Fakematch JASTrack::TList::seqMain

* Add debug ifdef
This commit is contained in:
LagoLunatic 2025-12-10 14:54:25 -05:00 committed by GitHub
parent 63d902bc89
commit 50f0876194
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 21 additions and 2 deletions

View File

@ -1022,7 +1022,7 @@ config.libs = [
Object(MatchingFor(ALL_GCN), "JSystem/JAudio2/JASProbe.cpp"),
Object(MatchingFor(ALL_GCN), "JSystem/JAudio2/JASReport.cpp"),
Object(MatchingFor(ALL_GCN), "JSystem/JAudio2/JASCmdStack.cpp"),
Object(NonMatching, "JSystem/JAudio2/JASTrack.cpp"),
Object(Equivalent, "JSystem/JAudio2/JASTrack.cpp"), # weak func order
Object(MatchingFor(ALL_GCN), "JSystem/JAudio2/JASTrackPort.cpp"),
Object(MatchingFor(ALL_GCN), "JSystem/JAudio2/JASRegisterParam.cpp"),
Object(MatchingFor(ALL_GCN), "JSystem/JAudio2/JASSeqCtrl.cpp"),

View File

@ -728,8 +728,8 @@ void JASTrack::TList::append(JASTrack* i_track) {
Push_back(i_track);
}
// NONMATCHING - missing load instruction (matches debug, equivalent)
void JASTrack::TList::seqMain() {
#if DEBUG
iterator it, it2;
for (it = begin(); it != end(); it = it2) {
it2 = it;
@ -742,6 +742,25 @@ void JASTrack::TList::seqMain() {
}
}
}
#else
iterator it;
for (it = begin(); it != end();) {
// Fakematch: Debug shows that it2 should be declared outside the loop and then this line
// should use operator=, but that results in a missing load instruction for retail, so we
// use the copy constructor instead of the assignment operator, which fixes it for some
// reason. Might be related to the fakematch in the assignment operator?
iterator it2 = it;
++it2;
int seqMainRes = it->seqMain();
if (seqMainRes < 0) {
Remove(&*it);
if (it->mFlags.autoDelete) {
delete &*it;
}
}
it = it2;
}
#endif
}
JASTrack::TChannelMgr::TChannelMgr(JASTrack* i_track) : mSoundParams(NULL), mTrack(i_track) {