Execute fclose before return error.

Signed-off-by: Huang Jianan <huangjia...@oppo.com>
---
 lib/compress_hints.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/lib/compress_hints.c b/lib/compress_hints.c
index 25adf35..92964eb 100644
--- a/lib/compress_hints.c
+++ b/lib/compress_hints.c
@@ -88,6 +88,7 @@ int erofs_load_compress_hints(void)
        char buf[PATH_MAX + 100];
        FILE *f;
        unsigned int line, max_pclustersize = 0;
+       int ret = 0;
 
        if (!cfg.c_compress_hints_file)
                return 0;
@@ -105,7 +106,8 @@ int erofs_load_compress_hints(void)
                if (!pattern || *pattern == '\0') {
                        erofs_err("cannot find a match pattern at line %u",
                                  line);
-                       return -EINVAL;
+                       ret = -EINVAL;
+                       goto out;
                }
                if (pclustersize % EROFS_BLKSIZ) {
                        erofs_warn("invalid physical clustersize %u, "
@@ -119,10 +121,12 @@ int erofs_load_compress_hints(void)
                if (pclustersize > max_pclustersize)
                        max_pclustersize = pclustersize;
        }
-       fclose(f);
+
        if (cfg.c_pclusterblks_max * EROFS_BLKSIZ < max_pclustersize) {
                cfg.c_pclusterblks_max = max_pclustersize / EROFS_BLKSIZ;
                erofs_warn("update max pclusterblks to %u", 
cfg.c_pclusterblks_max);
        }
-       return 0;
+out:
+       fclose(f);
+       return ret;
 }
-- 
2.25.1

Reply via email to