From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=50793 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Oyr59-00018R-8E for qemu-devel@nongnu.org; Thu, 23 Sep 2010 15:03:48 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1Oyr57-0000bj-M8 for qemu-devel@nongnu.org; Thu, 23 Sep 2010 15:03:47 -0400 Received: from moutng.kundenserver.de ([212.227.126.186]:64459) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1Oyr57-0000aO-9h for qemu-devel@nongnu.org; Thu, 23 Sep 2010 15:03:45 -0400 Message-ID: <4C9BA48A.1090600@mail.berlios.de> Date: Thu, 23 Sep 2010 21:03:38 +0200 From: Stefan Weil MIME-Version: 1.0 References: <1285267031-22966-1-git-send-email-weil@mail.berlios.de> In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Subject: [Qemu-devel] Re: [PATCH] block: Use GCC_FMT_ATTR and fix a format error List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Blue Swirl Cc: Kevin Wolf , QEMU Developers Am 23.09.2010 20:53, schrieb Blue Swirl: > On Thu, Sep 23, 2010 at 6:37 PM, Stefan Weil wrote: > >> Adding the gcc format attribute detects a format bug >> which is fixed here. >> >> Cc: Blue Swirl >> Cc: Kevin Wolf >> Signed-off-by: Stefan Weil >> --- >> block/blkverify.c | 5 +++-- >> 1 files changed, 3 insertions(+), 2 deletions(-) >> >> diff --git a/block/blkverify.c b/block/blkverify.c >> index 8083464..b39fb67 100644 >> --- a/block/blkverify.c >> +++ b/block/blkverify.c >> @@ -53,7 +53,8 @@ static AIOPool blkverify_aio_pool = { >> .cancel = blkverify_aio_cancel, >> }; >> >> -static void blkverify_err(BlkverifyAIOCB *acb, const char *fmt, ...) >> +static void GCC_FMT_ATTR(2, 3) blkverify_err(BlkverifyAIOCB *acb, >> + const char *fmt, ...) >> { >> va_list ap; >> >> @@ -300,7 +301,7 @@ static void blkverify_verify_readv(BlkverifyAIOCB *acb) >> ssize_t offset = blkverify_iovec_compare(acb->qiov,&acb->raw_qiov); >> if (offset != -1) { >> blkverify_err(acb, "contents mismatch in sector %ld", >> - acb->sector_num + (offset / BDRV_SECTOR_SIZE)); >> + (long)(acb->sector_num + (offset / BDRV_SECTOR_SIZE))); >> > sector_num is int64_t, so the correct fix is to change '%ld' to '%" PRId64'. > > I noticed that, too. But offset is ssize_t. Can you always be sure that (int64_t + ssize_t) results in a int64_t? I don't think it's so easy.