summaryrefslogtreecommitdiffstats
path: root/libdm/libdm-report.c
diff options
context:
space:
mode:
authorAlasdair Kergon <agk@redhat.com>2008-06-25 00:10:36 +0000
committerAlasdair Kergon <agk@redhat.com>2008-06-25 00:10:36 +0000
commitaa882ea5395f84e947a4b51e6b41534527fe1c57 (patch)
treee3c83e4f84b7208fb69ba82b6c9790e7a12acaf4 /libdm/libdm-report.c
parentca8d363d2ce037ef4a52e1fbd1d575c50d0adad7 (diff)
downloadlvm2-aa882ea5395f84e947a4b51e6b41534527fe1c57.tar.gz
lvm2-aa882ea5395f84e947a4b51e6b41534527fe1c57.tar.xz
lvm2-aa882ea5395f84e947a4b51e6b41534527fe1c57.zip
Cope with missing field values.
Diffstat (limited to 'libdm/libdm-report.c')
-rw-r--r--libdm/libdm-report.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/libdm/libdm-report.c b/libdm/libdm-report.c
index 08c606c8..b496200a 100644
--- a/libdm/libdm-report.c
+++ b/libdm/libdm-report.c
@@ -895,8 +895,13 @@ static int _output_as_rows(struct dm_report *rh)
}
list_iterate_items(fp, &rh->field_props) {
- if (fp->flags & FLD_HIDDEN)
+ if (fp->flags & FLD_HIDDEN) {
+ list_iterate_items(row, &rh->rows) {
+ field = list_item(list_first(&row->fields), struct dm_report_field);
+ list_del(&field->list);
+ }
continue;
+ }
if ((rh->flags & DM_REPORT_OUTPUT_HEADINGS)) {
if (!dm_pool_grow_object(rh->mem, rh->fields[fp->field_num].heading, 0)) {
@@ -910,10 +915,11 @@ static int _output_as_rows(struct dm_report *rh)
}
list_iterate_items(row, &rh->rows) {
- field = list_item(list_first(&row->fields), struct dm_report_field);
- if (!_output_field(rh, field))
- goto bad;
- list_del(&field->list);
+ if ((field = list_item(list_first(&row->fields), struct dm_report_field))) {
+ if (!_output_field(rh, field))
+ goto bad;
+ list_del(&field->list);
+ }
if (!list_end(&rh->rows, &row->list))
if (!dm_pool_grow_object(rh->mem, rh->separator, 0)) {