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.