Skip to content

Commit 4790ded

Browse files
committed
Fix the order issue in TreeView mode. (#3218)
1 parent de085ba commit 4790ded

1 file changed

Lines changed: 21 additions & 5 deletions

File tree

GRUB2/MOD_SRC/grub-2.04/grub-core/ventoy/ventoy_cmd.c

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1569,19 +1569,25 @@ int ventoy_cmp_img(img_info *img1, img_info *img2)
15691569

15701570
static int ventoy_cmp_subdir(img_iterator_node *node1, img_iterator_node *node2)
15711571
{
1572-
char *s1, *s2;
1572+
int i = 0;
15731573
int c1 = 0;
15741574
int c2 = 0;
1575+
int len = 0;
1576+
char *s1, *s2;
15751577

15761578
if (g_plugin_image_list == VENTOY_IMG_WHITE_LIST)
15771579
{
15781580
return (node1->plugin_list_index - node2->plugin_list_index);
15791581
}
15801582

1581-
for (s1 = node1->dir, s2 = node2->dir; *s1 && *s2; s1++, s2++)
1583+
s1 = node1->dir;
1584+
s2 = node2->dir;
1585+
len = grub_min(node1->dirlen, node2->dirlen);
1586+
1587+
for (i = 0; i < len; i++)
15821588
{
1583-
c1 = *s1;
1584-
c2 = *s2;
1589+
c1 = *s1++;
1590+
c2 = *s2++;
15851591

15861592
if (0 == g_sort_case_sensitive)
15871593
{
@@ -1602,7 +1608,17 @@ static int ventoy_cmp_subdir(img_iterator_node *node1, img_iterator_node *node2)
16021608
}
16031609
}
16041610

1605-
return *s1 - *s2;
1611+
if (len == node1->dirlen)
1612+
{
1613+
c1 = 0;
1614+
}
1615+
1616+
if (len == node2->dirlen)
1617+
{
1618+
c2 = 0;
1619+
}
1620+
1621+
return (c1 - c2);
16061622
}
16071623

16081624
void ventoy_swap_img(img_info *img1, img_info *img2)

0 commit comments

Comments
 (0)