aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Motin <mav@FreeBSD.org>2019-06-21 23:29:16 +0000
committerAlexander Motin <mav@FreeBSD.org>2019-06-21 23:29:16 +0000
commit7318fcb51df11b4b0020513a6945b0897d01c103 (patch)
tree008b51d9e33d1ed164477f74b3c26dc1decb8aff
parent1bb957296b3677de64b46de7832136b6bb5a2654 (diff)
downloadsrc-7318fcb51df11b4b0020513a6945b0897d01c103.tar.gz
src-7318fcb51df11b4b0020513a6945b0897d01c103.zip
Fix individual_element_index when some type has 0 elements.
When some type has 0 elements, saved_individual_element_index was set to -1 on second type bump, since individual_element_index was not restored after the first. To me it looks easier just to increment saved_individual_element_index separately than think when to save it. MFC after: 2 weeks
Notes
Notes: svn path=/head/; revision=349281
-rw-r--r--sys/cam/scsi/scsi_enc_ses.c10
1 files changed, 3 insertions, 7 deletions
diff --git a/sys/cam/scsi/scsi_enc_ses.c b/sys/cam/scsi/scsi_enc_ses.c
index 5e9d2dc94d2d..f34fe3de6aaf 100644
--- a/sys/cam/scsi/scsi_enc_ses.c
+++ b/sys/cam/scsi/scsi_enc_ses.c
@@ -444,6 +444,7 @@ ses_iter_next(struct ses_iterator *iter)
iter->type_element_index = ITERATOR_INDEX_END;
iter->global_element_index = ITERATOR_INDEX_END;
iter->individual_element_index = ITERATOR_INDEX_END;
+ iter->saved_individual_element_index = ITERATOR_INDEX_END;
return (NULL);
}
@@ -468,17 +469,12 @@ ses_iter_next(struct ses_iterator *iter)
*/
iter->type_index++;
iter->type_element_index = 0;
- iter->saved_individual_element_index
- = iter->individual_element_index;
iter->individual_element_index = ITERATOR_INDEX_INVALID;
}
if (iter->type_element_index > 0) {
- if (iter->type_element_index == 1) {
- iter->individual_element_index
- = iter->saved_individual_element_index;
- }
- iter->individual_element_index++;
+ iter->individual_element_index =
+ ++iter->saved_individual_element_index;
}
return (&iter->cache->elm_map[iter->global_element_index]);