From: Jaroslav Kysela Date: Thu, 11 Feb 2016 14:02:55 +0000 (+0100) Subject: idnode: a better mechanism to not save idnode data in the destroy phase X-Git-Tag: v4.2.1~1035 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=1cf3f2ab81236dceaf0de124f82e7ca3f38e4538;p=thirdparty%2Ftvheadend.git idnode: a better mechanism to not save idnode data in the destroy phase --- diff --git a/src/idnode.c b/src/idnode.c index cf9b2f238..66a02ab25 100644 --- a/src/idnode.c +++ b/src/idnode.c @@ -161,7 +161,7 @@ idnode_unlink(idnode_t *in) RB_REMOVE(in->in_domain, in, in_domain_link); tvhtrace("idnode", "unlink node %s", idnode_uuid_as_str(in, ubuf)); idnode_notify(in, "delete"); - assert(in->in_save == NULL); + assert(in->in_save == NULL || in->in_save == SAVEPTR_OUTOFSERVICE); } /** @@ -1113,12 +1113,12 @@ idnode_save_check ( idnode_t *self, int weak ) char filename[PATH_MAX]; htsmsg_t *m; - if (self->in_save == NULL) + if (self->in_save == NULL || self->in_save == SAVEPTR_OUTOFSERVICE) return; TAILQ_REMOVE(&idnodes_save, self->in_save, ise_link); free(self->in_save); - self->in_save = NULL; + self->in_save = SAVEPTR_OUTOFSERVICE; if (weak) return; diff --git a/src/idnode.h b/src/idnode.h index 0b77766af..19053b60f 100644 --- a/src/idnode.h +++ b/src/idnode.h @@ -30,6 +30,8 @@ struct access; typedef struct idnode idnode_t; typedef struct idnode_save idnode_save_t; +#define SAVEPTR_OUTOFSERVICE ((void *)((intptr_t)-1LL)) + /* * Node set */