Rémi Bernon (@rbernon) commented about dlls/dmband/bandtrack.c:
+ DMUS_BAND_PARAM *band_param = param; + if (!band_param || !band_param->pBand) + return E_POINTER; + if (!(new_entry = calloc(1, sizeof(*new_entry)))) + return E_OUTOFMEMORY; + new_entry->band = band_param->pBand; + new_entry->head.lBandTimeLogical = time; + new_entry->head.lBandTimePhysical = band_param->mtTimePhysical; + IDirectMusicBand_AddRef(new_entry->band); + if (list_empty(&This->bands)) + list_add_tail(&This->bands, &new_entry->entry); + else + { + LIST_FOR_EACH_ENTRY_SAFE(entry, next_entry, &This->bands, struct band_entry, entry) + if (entry->entry.next == &This->bands || next_entry->head.lBandTimeLogical > time) + list_add_after(&entry->entry, &new_entry->entry); I think you'll need to break out of the loop here?
-- https://gitlab.winehq.org/wine/wine/-/merge_requests/5040#note_60789