diff options
author | Zdenek Kabelac <zkabelac@redhat.com> | 2012-03-12 14:35:57 +0000 |
---|---|---|
committer | Zdenek Kabelac <zkabelac@redhat.com> | 2012-03-12 14:35:57 +0000 |
commit | 78d8e56a8eb86f0bf16b937eec27e6a8bc0e9b54 (patch) | |
tree | 14d994ce90df906c00219c6225d28e2830412a7e /lib | |
parent | 32e7600cbd1f8ee9678e2ec3644e72572f667181 (diff) | |
download | lvm2-78d8e56a8eb86f0bf16b937eec27e6a8bc0e9b54.tar.gz lvm2-78d8e56a8eb86f0bf16b937eec27e6a8bc0e9b54.tar.xz lvm2-78d8e56a8eb86f0bf16b937eec27e6a8bc0e9b54.zip |
Simplify error path code for filter initialization
Use 'int' counter.
Use 'bad' with goto_bad macro.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/commands/toolcontext.c | 19 |
1 files changed, 8 insertions, 11 deletions
diff --git a/lib/commands/toolcontext.c b/lib/commands/toolcontext.c index 23617829..d2187700 100644 --- a/lib/commands/toolcontext.c +++ b/lib/commands/toolcontext.c @@ -730,7 +730,7 @@ static int _init_dev_cache(struct cmd_context *cmd) static struct dev_filter *_init_filter_components(struct cmd_context *cmd) { - unsigned nr_filt = 0; + int nr_filt = 0; const struct dm_config_node *cn; struct dev_filter *filters[MAX_FILTERS]; struct dev_filter *composite; @@ -761,14 +761,14 @@ static struct dev_filter *_init_filter_components(struct cmd_context *cmd) else if (!(filters[nr_filt++] = regex_filter_create(cn->v))) { log_error("Failed to create regex device filter"); - goto err; + goto bad; } /* device type filter. Required. */ cn = find_config_tree_node(cmd, "devices/types"); if (!(filters[nr_filt++] = lvm_type_filter_create(cmd->proc_dir, cn))) { log_error("Failed to create lvm type filter"); - goto err; + goto bad; } /* md component filter. Optional, non-critical. */ @@ -790,17 +790,14 @@ static struct dev_filter *_init_filter_components(struct cmd_context *cmd) if (nr_filt == 1) return filters[0]; - if (!(composite = composite_filter_create(nr_filt, filters))) { - stack; - nr_filt++; /* compensate skip NULL */ - goto err; - } + if (!(composite = composite_filter_create(nr_filt, filters))) + goto_bad; return composite; -err: - nr_filt--; /* skip NULL */ - while (nr_filt-- > 0) +bad: + while (--nr_filt >= 0) filters[nr_filt]->destroy(filters[nr_filt]); + return NULL; } |