From: Jaroslav Kysela Date: Sat, 12 Dec 2015 20:49:16 +0000 (+0100) Subject: DVR: f_fsid might be 0, fixes #3413 X-Git-Tag: v4.2.1~1310 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=66e5d277a59db723a8718afb3bdbef63824fa050;p=thirdparty%2Ftvheadend.git DVR: f_fsid might be 0, fixes #3413 --- diff --git a/src/dvr/dvr_vfsmgr.c b/src/dvr/dvr_vfsmgr.c index 5ea6f5dbe..59a4cff00 100644 --- a/src/dvr/dvr_vfsmgr.c +++ b/src/dvr/dvr_vfsmgr.c @@ -54,8 +54,6 @@ dvr_vfs_find(dvr_vfs_t *old, tvh_fsid_t id) { dvr_vfs_t *dv; - if (id == 0) - return NULL; if (old && old->fsid == id) return old; LIST_FOREACH(dv, &dvrvfs_list, link) @@ -67,6 +65,16 @@ dvr_vfs_find(dvr_vfs_t *old, tvh_fsid_t id) return dv; } +static dvr_vfs_t * +dvr_vfs_find1(dvr_vfs_t *old, htsmsg_t *m) +{ + int64_t v; + + if (!htsmsg_get_s64(m, "fsid", &v)) + return dvr_vfs_find(old, v); + return NULL; +} + /* * */ @@ -87,7 +95,7 @@ dvr_vfs_refresh_entry(dvr_entry_t *de) HTSMSG_FOREACH(f, de->de_files) if ((m = htsmsg_field_get_map(f)) != NULL) { filename = htsmsg_get_str(m, "filename"); - vfs = dvr_vfs_find(vfs, htsmsg_get_s64_or_default(m, "fsid", 0)); + vfs = dvr_vfs_find1(vfs, m); if (vfs) { size = htsmsg_get_s64_or_default(m, "size", 0); vfs->used_size = size <= vfs->used_size ? vfs->used_size - size : 0; @@ -123,7 +131,7 @@ dvr_vfs_remove_entry(dvr_entry_t *de) lock_assert(&global_lock); HTSMSG_FOREACH(f, de->de_files) if ((m = htsmsg_field_get_map(f)) != NULL) { - vfs = dvr_vfs_find(vfs, htsmsg_get_s64_or_default(m, "fsid", 0)); + vfs = dvr_vfs_find1(vfs, m); if (vfs) { size = htsmsg_get_s64_or_default(m, "size", 0); vfs->used_size = size <= vfs->used_size ? vfs->used_size - size : 0; @@ -145,7 +153,7 @@ dvr_vfs_update_filename(const char *filename, htsmsg_t *fdata) if (filename == NULL || fdata == NULL) return -1; - vfs = dvr_vfs_find(NULL, htsmsg_get_s64_or_default(fdata, "fsid", 0)); + vfs = dvr_vfs_find1(NULL, fdata); if (vfs) { size = htsmsg_get_s64_or_default(fdata, "size", 0); vfs->used_size = size <= vfs->used_size ? vfs->used_size - size : 0;