From: Karel Zak Date: Thu, 27 Oct 2016 08:51:59 +0000 (+0200) Subject: libfdisk: cleanup labelitem initialization X-Git-Tag: v2.29~27 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a50c849007f02ccb4bd15107da53f27c8ce9b41c;p=thirdparty%2Futil-linux.git libfdisk: cleanup labelitem initialization * use macro for label initialization * make sure we do not call fdisk_ref_labelitem() and fdisk_unref_labelitem() for non-allocated items Signed-off-by: Karel Zak --- diff --git a/libfdisk/src/fdiskP.h b/libfdisk/src/fdiskP.h index 159823c450..c624773db5 100644 --- a/libfdisk/src/fdiskP.h +++ b/libfdisk/src/fdiskP.h @@ -433,6 +433,10 @@ struct fdisk_labelitem { } data; }; +/* Use only internally for non-allocated items, never use + * refcouting for such items! + */ +#define FDISK_LABELITEM_INIT { .type = 0, .refcount = 0 } /* ask.c */ struct fdisk_ask *fdisk_new_ask(void); diff --git a/libfdisk/src/item.c b/libfdisk/src/item.c index 7809b5e032..31637a1f1d 100644 --- a/libfdisk/src/item.c +++ b/libfdisk/src/item.c @@ -52,8 +52,11 @@ struct fdisk_labelitem *fdisk_new_labelitem(void) */ void fdisk_ref_labelitem(struct fdisk_labelitem *li) { - if (li) + if (li) { + /* me sure we do not use refcouting for static items */ + assert(li->refcount > 0); li->refcount++; + } } /** @@ -94,6 +97,9 @@ void fdisk_unref_labelitem(struct fdisk_labelitem *li) if (!li) return; + /* me sure we do not use refcouting for static items */ + assert(li->refcount > 0); + li->refcount--; if (li->refcount <= 0) { DBG(ITEM, ul_debugobj(li, "free")); diff --git a/libfdisk/src/label.c b/libfdisk/src/label.c index 0e83fdf34b..52f9ec5ea7 100644 --- a/libfdisk/src/label.c +++ b/libfdisk/src/label.c @@ -416,7 +416,7 @@ int fdisk_locate_disklabel(struct fdisk_context *cxt, int n, const char **name, */ int fdisk_get_disklabel_id(struct fdisk_context *cxt, char **id) { - struct fdisk_labelitem item = {0}; + struct fdisk_labelitem item = FDISK_LABELITEM_INIT; int rc; if (!cxt || !cxt->label || !id)