[12.x] fix: continue route matching rather than returning second fallbackRoute #57922
+2
−2
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
PR #57871 introduced a very slight change to the behaviour of matching fallback routes.
Before #57871: Return first non-fallback route match, otherwise return first fallback route match.
After #57871: Return the second matching fallback route (if one exist), otherwise return the first non-fallback route match, otherwise return the first fallback route.
Reasoning:
After the first fallbackRoute is matched, the next fallbackRoute will no longer get caught by the ->isFallback guard, due to the === null check. This causes the next matching fallbackRoute to be returned, rather than continuing through the non-fallback routes.
To fix this, I've removed the === null check, causing the loop to continue. I used null coalescing assignment to ensure only the first fallback route is captured.