1.1 --- a/libe2access/lib/src/image.c Wed Feb 16 18:21:01 2022 +0100
1.2 +++ b/libe2access/lib/src/image.c Wed Feb 16 18:38:11 2022 +0100
1.3 @@ -482,8 +482,9 @@
1.4 struct ext2_inode_large inode;
1.5 ext2_ino_t ino_parent = 0;
1.6 errcode_t retval;
1.7 + int isdir = _image_isdir(fs, ino);
1.8
1.9 - if (_image_isdir(fs, ino))
1.10 + if (isdir)
1.11 {
1.12 retval = image_dir_get_parent(fs, ino, &ino_parent);
1.13 if (retval)
1.14 @@ -502,10 +503,13 @@
1.15 return 0;
1.16
1.17 /* Decrement the reference count. With no more references to the inode,
1.18 - remove its resources. */
1.19 + remove its resources. Directories appear to need a double decrement. */
1.20
1.21 inode.i_links_count--;
1.22
1.23 + if (isdir && inode.i_links_count)
1.24 + inode.i_links_count--;
1.25 +
1.26 if (!inode.i_links_count)
1.27 {
1.28 /* NOTE: Update deletion time. */