From 3d9eb49da969c4ac2c8579db7baf96ae3fd04e1c Mon Sep 17 00:00:00 2001 From: Eric Biggers Date: Tue, 24 Nov 2015 22:11:58 -0600 Subject: [PATCH] wim.c: replace finalize_wim_struct() with wim_decrement_refcnt() --- include/wimlib/wim.h | 2 +- src/blob_table.c | 4 +--- src/wim.c | 12 +++++++----- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/include/wimlib/wim.h b/include/wimlib/wim.h index 00de8a53..67f55e3b 100644 --- a/include/wimlib/wim.h +++ b/include/wimlib/wim.h @@ -186,7 +186,7 @@ static inline bool wim_is_pipable(const WIMStruct *wim) } extern void -finalize_wim_struct(WIMStruct *wim); +wim_decrement_refcnt(WIMStruct *wim); extern bool wim_has_solid_resources(const WIMStruct *wim); diff --git a/src/blob_table.c b/src/blob_table.c index 1509a835..e1fb6ada 100644 --- a/src/blob_table.c +++ b/src/blob_table.c @@ -173,9 +173,7 @@ blob_release_location(struct blob_descriptor *blob) list_del(&blob->rdesc_node); if (list_empty(&rdesc->blob_list)) { - wimlib_assert(rdesc->wim->refcnt > 0); - if (--rdesc->wim->refcnt == 0) - finalize_wim_struct(rdesc->wim); + wim_decrement_refcnt(rdesc->wim); FREE(rdesc); } break; diff --git a/src/wim.c b/src/wim.c index e01131dd..b5827171 100644 --- a/src/wim.c +++ b/src/wim.c @@ -867,10 +867,14 @@ can_modify_wim(WIMStruct *wim) return 0; } -/* Free a WIMStruct after no more resources reference it. */ +/* Release a reference to a WIMStruct. If the reference count reaches 0, the + * WIMStruct is freed. */ void -finalize_wim_struct(WIMStruct *wim) +wim_decrement_refcnt(WIMStruct *wim) { + wimlib_assert(wim->refcnt > 0); + if (--wim->refcnt != 0) + return; if (filedes_valid(&wim->in_fd)) filedes_close(&wim->in_fd); if (filedes_valid(&wim->out_fd)) @@ -901,9 +905,7 @@ wimlib_free(WIMStruct *wim) wim->image_metadata = NULL; } - wimlib_assert(wim->refcnt > 0); - if (--wim->refcnt == 0) - finalize_wim_struct(wim); + wim_decrement_refcnt(wim); } static bool -- 2.43.0