On 9/17/23 13:40, Mike Maslenkin wrote:
This patch generates a warning.
On Fri, Sep 15, 2023 at 9:41 PM Denis V. Lunev <[email protected]> wrote:
More conditions follows thus the check should be more scalable.
Signed-off-by: Denis V. Lunev <[email protected]>
---
block/parallels.c | 19 ++++++++-----------
1 file changed, 8 insertions(+), 11 deletions(-)
diff --git a/block/parallels.c b/block/parallels.c
index 8f223bfd89..aa29df9f77 100644
--- a/block/parallels.c
+++ b/block/parallels.c
@@ -1065,7 +1065,7 @@ static int parallels_open(BlockDriverState *bs, QDict
*options, int flags,
int ret, size, i;
int64_t file_nb_sectors, sector;
uint32_t data_start;
- bool data_off_is_correct;
+ bool need_check = false;
ret = parallels_opts_prealloc(bs, options, errp);
if (ret < 0) {
@@ -1133,11 +1133,12 @@ static int parallels_open(BlockDriverState *bs, QDict
*options, int flags,
s->bat_bitmap = (uint32_t *)(s->header + 1);
if (le32_to_cpu(ph.inuse) == HEADER_INUSE_MAGIC) {
- s->header_unclean = true;
+ need_check = s->header_unclean = true;
}
- data_off_is_correct = parallels_test_data_off(s, file_nb_sectors,
- &data_start);
+ need_check = need_check ||
+ !parallels_test_data_off(s, file_nb_sectors, &data_start);
+
../block/parallels.c:1139:18: warning: variable 'data_start' is used
uninitialized whenever '||' condition is true
[-Wsometimes-uninitialized]
need_check = need_check ||
^~~~~~~~~~
../block/parallels.c:1142:21: note: uninitialized use occurs here
s->data_start = data_start;
^~~~~~~~~~
../block/parallels.c:1139:18: note: remove the '||' if its condition
is always false
need_check = need_check ||
^~~~~~~~~~~~~
../block/parallels.c:1067:24: note: initialize the variable
'data_start' to silence this warning
uint32_t data_start;
^
= 0
1 warning generated.
Regards,
Mike.
wow! That is pretty much correct!
What compiler/OS you are using :)
Den