Esme Povirk (@madewokherd) commented about dlls/comdlg32/navbar.c:
while (ILRemoveLastID(pidl)); ILFree(pidl);
- NAVBAR_OVERFLOW_Clear(info);
- /* move the first crumb to overflow menu, if there are at least 2 crumbs */
- crumb1 = LIST_ENTRY(list_head(&new_crumbs), struct crumb, entry);
- if (crumb1 && crumb1->entry.next != &new_crumbs)
- {
NAVBAR_OVERFLOW_Insert(info, crumb1->pidl, crumb1->display_name);
DestroyWindow(crumb1->hwnd);
list_remove(&crumb1->entry);
I think removing items from the list like this is confusing. It also results in the need for a special case "preserving" the first crumb in the layout code.