diff --git a/interfaces/innerkits/fs_manager/fstab.c b/interfaces/innerkits/fs_manager/fstab.c index 91dc1737c1e6625ea528073e4e203e840e10e35d..6be617ff7b2e68e2b23102a8cc9f58744e2040ce 100644 --- a/interfaces/innerkits/fs_manager/fstab.c +++ b/interfaces/innerkits/fs_manager/fstab.c @@ -78,11 +78,11 @@ static int AddToFstab(Fstab *fstab, FstabItem *item) if (fstab == NULL || item == NULL) { return -1; } - if (fstab->head != NULL) { - item->next = fstab->head->next; - fstab->head->next = item; + if (fstab->tail == NULL) { + fstab->head = fstab->tail = item; } else { - fstab->head = item; + fstab->tail->next = item; + fstab->tail = item; } return 0; } @@ -123,6 +123,7 @@ void ReleaseFstab(Fstab *fstab) ReleaseFstabItem(item); item = tmp; } + fstab->head = fstab->tail = NULL; free(fstab); fstab = NULL; } diff --git a/interfaces/innerkits/include/fs_manager/fs_manager.h b/interfaces/innerkits/include/fs_manager/fs_manager.h index 726ad3ed7b1c7facf4f7c6ec4351892d3c212f6d..8d797de9b01598383bd2cdc1f06535b6105756b5 100644 --- a/interfaces/innerkits/include/fs_manager/fs_manager.h +++ b/interfaces/innerkits/include/fs_manager/fs_manager.h @@ -59,6 +59,7 @@ typedef struct FstabItem { typedef struct { struct FstabItem *head; + struct FstabItem *tail; } Fstab; typedef enum SlotFlag {