diff options
author | Alasdair Kergon <agk@redhat.com> | 2008-06-25 00:10:36 +0000 |
---|---|---|
committer | Alasdair Kergon <agk@redhat.com> | 2008-06-25 00:10:36 +0000 |
commit | aa882ea5395f84e947a4b51e6b41534527fe1c57 (patch) | |
tree | e3c83e4f84b7208fb69ba82b6c9790e7a12acaf4 /libdm/libdm-report.c | |
parent | ca8d363d2ce037ef4a52e1fbd1d575c50d0adad7 (diff) | |
download | lvm2-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.c | 16 |
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)) { |