diff --git a/src/backend/access/rmgrdesc/gindesc.c b/src/backend/access/rmgrdesc/gindesc.c
index 72d60bf8d32f9ea3930ac099046db00df3a731ad..3675e1ec5d8625cf201e8c2d84e8abfc944e6bf5 100644
--- a/src/backend/access/rmgrdesc/gindesc.c
+++ b/src/backend/access/rmgrdesc/gindesc.c
@@ -56,9 +56,9 @@ gin_desc(StringInfo buf, uint8 xl_info, char *rec)
 					BlockNumber leftChildBlkno;
 					BlockNumber rightChildBlkno;
 
-					memcpy(&leftChildBlkno, payload, sizeof(BlockNumber));
-					payload += sizeof(BlockNumber);
-					memcpy(&rightChildBlkno, payload, sizeof(BlockNumber));
+					leftChildBlkno = BlockIdGetBlockNumber((BlockId) payload);
+					payload += sizeof(BlockIdData);
+					rightChildBlkno = BlockIdGetBlockNumber((BlockId) payload);
 					payload += sizeof(BlockNumber);
 					appendStringInfo(buf, " children: %u/%u",
 									 leftChildBlkno, rightChildBlkno);