printtup.c: error: ‘VARSIZE_ANY’ makes pointer from integer when USE_VALGRIND is defined

Started by Dmitry Mityugov5 months ago2 messages
#1Dmitry Mityugov
d.mityugov@postgrespro.ru
1 attachment(s)

When USE_VALGRIND is defined, compilation started to fail with this
error message (-Werror is used; without it, a warning is observed
instead):

printtup.c:353:95: error: passing argument 1 of ‘VARSIZE_ANY’ makes
pointer from integer without a cast [-Wint-conversion]

Not sure if this is the best fix, but it silences the warning, and is
based on other recently introduced fixes:

diff --git a/src/backend/access/common/printtup.c 
b/src/backend/access/common/printtup.c
index 830a3d883aa..6d3045e2332 100644
--- a/src/backend/access/common/printtup.c
+++ b/src/backend/access/common/printtup.c
@@ -350,7 +350,7 @@ printtup(TupleTableSlot *slot, DestReceiver *self)
          */
         if (thisState->typisvarlena)
             VALGRIND_CHECK_MEM_IS_DEFINED(DatumGetPointer(attr),
-                                         VARSIZE_ANY(attr));
+                                         
VARSIZE_ANY(DatumGetPointer(attr)));

if (thisState->format == 0)
{

I'm attaching a patch.

Best regards,
Dmitry

Attachments:

0001-Use-DatumGetPointer-in-VALGRIND_CHECK_MEM_IS_DEFINED.patchtext/x-diff; name=0001-Use-DatumGetPointer-in-VALGRIND_CHECK_MEM_IS_DEFINED.patchDownload
From: Dmitry Mityugov <d.mityugov@postgrespro.ru>
Date: Tue, 5 Aug 2025 20:29:57 +0300
Subject: [PATCH] Use DatumGetPointer() in VALGRIND_CHECK_MEM_IS_DEFINED() call

It seems that this patch is a follow-up to 0f5ade7a that did the same
conversion in other places.
---
 src/backend/access/common/printtup.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/backend/access/common/printtup.c b/src/backend/access/common/printtup.c
index 830a3d883aa..6d3045e2332 100644
--- a/src/backend/access/common/printtup.c
+++ b/src/backend/access/common/printtup.c
@@ -350,7 +350,7 @@ printtup(TupleTableSlot *slot, DestReceiver *self)
 		 */
 		if (thisState->typisvarlena)
 			VALGRIND_CHECK_MEM_IS_DEFINED(DatumGetPointer(attr),
-										  VARSIZE_ANY(attr));
+										  VARSIZE_ANY(DatumGetPointer(attr)));
 
 		if (thisState->format == 0)
 		{
-- 
2.50.1

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Dmitry Mityugov (#1)
Re: printtup.c: error: ‘VARSIZE_ANY’ makes pointer from integer when USE_VALGRIND is defined

Dmitry Mityugov <d.mityugov@postgrespro.ru> writes:

When USE_VALGRIND is defined, compilation started to fail with this
error message (-Werror is used; without it, a warning is observed
instead):
printtup.c:353:95: error: passing argument 1 of ‘VARSIZE_ANY’ makes
pointer from integer without a cast [-Wint-conversion]

Thanks for the report, but I already fixed this a couple hours ago.

regards, tom lane