Message ID | 1463731067-7120-1-git-send-email-kwolf@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Am 20.05.2016 um 09:57 hat Kevin Wolf geschrieben: > When all BDSes have already been iterated and we return NULL, the > iterator must be freed, too. > > Signed-off-by: Kevin Wolf <kwolf@redhat.com> NACK, this doesn't fix cases where the caller exists loop prematurely. Kevin
diff --git a/block/block-backend.c b/block/block-backend.c index 6928d61..c5fb251 100644 --- a/block/block-backend.c +++ b/block/block-backend.c @@ -329,7 +329,12 @@ BdrvNextIterator *bdrv_next(BdrvNextIterator *it, BlockDriverState **bs) *bs = it->bs; } while (*bs && bdrv_has_blk(*bs)); - return *bs ? it : NULL; + if (*bs) { + return it; + } else { + g_free(it); + return NULL; + } } /*
When all BDSes have already been iterated and we return NULL, the iterator must be freed, too. Signed-off-by: Kevin Wolf <kwolf@redhat.com> --- block/block-backend.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)