Am 10.10.2014 um 14:03 schrieb Benoît Canet:
+ } else if (!num) {
+ error_report("Unexpected end of image");
+ return 0;
I think this test can miss some case of Unexpected end of image.
For example supose that in map_is_allocated the first bdrv_is_allocated
actually succeed then *pnum = num. Then the bottom loop has exit on failure
and the function return.
in map_f &num is map_is_allocated *pnum so map_f's num != 0 and this very test
fails to see the unexpected end of image error.
num != 0 because some sectors where successfully queried. In my opinion,
we should print the information about them we have. Then, the do-while
loop is repeated; and this time, map_is_allocated() either again returns
num > 0 (for whatever reason, but I'd be fine with it) or, more
probably, it'll be num == 0 this time. So the error is not missed, it's
just printed one iteration later.
Max
Best regards
Benoît
}
retstr = ret ? " allocated" : "not allocated";
--
2.0.4