aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKarel Zak <kzak@redhat.com>2016-10-27 10:51:59 +0200
committerKarel Zak <kzak@redhat.com>2016-10-27 10:53:55 +0200
commita50c849007f02ccb4bd15107da53f27c8ce9b41c (patch)
tree3e5e739bfb41208e7b368ea6d05dd4b732bcd900
parent14b7f754c9abb0ea213d7824766496e6a0152c58 (diff)
downloadutil-linux-a50c849007f02ccb4bd15107da53f27c8ce9b41c.tar.gz
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 <kzak@redhat.com>
-rw-r--r--libfdisk/src/fdiskP.h4
-rw-r--r--libfdisk/src/item.c8
-rw-r--r--libfdisk/src/label.c2
3 files changed, 12 insertions, 2 deletions
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)