diff --git a/block.c b/block.c index bfe46e37653d1f7bc340c5e36d424ae4cb7f5637..89eece7b7bd7727356a5d69246f483548ea9734b 100644 --- a/block.c +++ b/block.c @@ -1929,7 +1929,19 @@ static void multiwrite_cb(void *opaque, int ret) static int multiwrite_req_compare(const void *a, const void *b) { - return (((BlockRequest*) a)->sector - ((BlockRequest*) b)->sector); + const BlockRequest *req1 = a, *req2 = b; + + /* + * Note that we can't simply subtract req2->sector from req1->sector + * here as that could overflow the return value. + */ + if (req1->sector > req2->sector) { + return 1; + } else if (req1->sector < req2->sector) { + return -1; + } else { + return 0; + } } /*