Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix infinite loop if reset occurs just prior to a ping while progress indicator is on screen #354

Merged
merged 2 commits into from
Jul 27, 2024

Conversation

Jamiras
Copy link
Member

@Jamiras Jamiras commented Jul 17, 2024

When calling rc_client_reset with a progress indicator on screen, the progress indicator is immediately hidden and the scheduled event to hide it is removed from the queue. This is done by changing it's scheduled time to 0. Since the queue is sorted, the scan to remove the item stops as soon as an item is found with a higher scheduled time. As a result, if the event is not the first item in the queue, it's not removed. Instead, it gets reinserted as the first item, pointing at the previous first item, which is still pointing at the chain that is pointing at it. The next time the queue is updated, there's a potential infinite loop as it looks for a place to insert the new item.

@Jamiras Jamiras added this to the 11.5.0 milestone Jul 17, 2024
@Jamiras Jamiras merged commit c1b30ea into RetroAchievements:develop Jul 27, 2024
7 checks passed
@Jamiras Jamiras deleted the bugfix/reset_hide_progress branch July 27, 2024 12:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant