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?