From 7b21e897af4a1c946d9c935224a2fe377311ff22 Mon Sep 17 00:00:00 2001 From: Peter Eisentraut Date: Thu, 19 Dec 2024 23:41:23 +0100 Subject: [PATCH 04/10] Remove various unnecessary (char *) casts Remove a number of (char *) casts that are unnecessary. Or in some cases, rewrite the code to make the purpose of the cast clearer. --- contrib/ltree/ltxtquery_io.c | 2 +- contrib/pg_trgm/trgm_gist.c | 10 +++++----- contrib/postgres_fdw/postgres_fdw.c | 8 ++++---- src/backend/access/transam/xlog.c | 4 ++-- src/backend/libpq/auth.c | 8 +++++--- src/backend/libpq/pqcomm.c | 2 +- src/backend/nodes/copyfuncs.c | 2 +- src/backend/nodes/makefuncs.c | 2 +- src/backend/storage/page/bufpage.c | 2 +- src/backend/utils/cache/relmapper.c | 4 ++-- src/backend/utils/error/jsonlog.c | 2 +- src/bin/pg_basebackup/pg_receivewal.c | 2 +- src/bin/pg_dump/compress_gzip.c | 2 +- src/bin/pg_rewind/pg_rewind.c | 2 +- src/bin/psql/describe.c | 2 +- src/common/controldata_utils.c | 4 ++-- src/interfaces/ecpg/ecpglib/descriptor.c | 4 ++-- src/interfaces/ecpg/ecpglib/execute.c | 2 +- src/interfaces/ecpg/pgtypeslib/numeric.c | 4 ++-- 19 files changed, 35 insertions(+), 33 deletions(-) diff --git a/contrib/ltree/ltxtquery_io.c b/contrib/ltree/ltxtquery_io.c index 7b8fba17ff2..ec331607793 100644 --- a/contrib/ltree/ltxtquery_io.c +++ b/contrib/ltree/ltxtquery_io.c @@ -410,7 +410,7 @@ ltxtq_in(PG_FUNCTION_ARGS) { ltxtquery *res; - if ((res = queryin((char *) PG_GETARG_POINTER(0), fcinfo->context)) == NULL) + if ((res = queryin(PG_GETARG_POINTER(0), fcinfo->context)) == NULL) PG_RETURN_NULL(); PG_RETURN_POINTER(res); } diff --git a/contrib/pg_trgm/trgm_gist.c b/contrib/pg_trgm/trgm_gist.c index 14285a919ad..5ba895217b0 100644 --- a/contrib/pg_trgm/trgm_gist.c +++ b/contrib/pg_trgm/trgm_gist.c @@ -106,7 +106,7 @@ makesign(BITVECP sign, TRGM *a, int siglen) SETBIT(sign, SIGLENBIT(siglen)); /* set last unused bit */ for (k = 0; k < len; k++) { - CPTRGM(((char *) &tmp), ptr + k); + CPTRGM(&tmp, ptr + k); HASH(sign, tmp, siglen); } } @@ -186,7 +186,7 @@ cnt_sml_sign_common(TRGM *qtrg, BITVECP sign, int siglen) for (k = 0; k < len; k++) { - CPTRGM(((char *) &tmp), ptr + k); + CPTRGM(&tmp, ptr + k); count += GETBIT(sign, HASHVAL(tmp, siglen)); } @@ -373,7 +373,7 @@ gtrgm_consistent(PG_FUNCTION_ARGS) res = true; for (k = 0; k < len; k++) { - CPTRGM(((char *) &tmp), ptr + k); + CPTRGM(&tmp, ptr + k); if (!GETBIT(sign, HASHVAL(tmp, siglen))) { res = false; @@ -426,7 +426,7 @@ gtrgm_consistent(PG_FUNCTION_ARGS) check = (bool *) palloc(len * sizeof(bool)); for (k = 0; k < len; k++) { - CPTRGM(((char *) &tmp), ptr + k); + CPTRGM(&tmp, ptr + k); check[k] = GETBIT(sign, HASHVAL(tmp, siglen)); } res = trigramsMatchGraph(cache->graph, check); @@ -552,7 +552,7 @@ unionkey(BITVECP sbase, TRGM *add, int siglen) for (i = 0; i < ARRNELEM(add); i++) { - CPTRGM(((char *) &tmp), ptr + i); + CPTRGM(&tmp, ptr + i); HASH(sbase, tmp, siglen); } } diff --git a/contrib/postgres_fdw/postgres_fdw.c b/contrib/postgres_fdw/postgres_fdw.c index b92e2a0fc9f..de43727a2a0 100644 --- a/contrib/postgres_fdw/postgres_fdw.c +++ b/contrib/postgres_fdw/postgres_fdw.c @@ -5660,13 +5660,13 @@ postgresImportForeignSchema(ImportForeignSchemaStmt *stmt, Oid serverOid) attname = PQgetvalue(res, i, 1); typename = PQgetvalue(res, i, 2); attnotnull = PQgetvalue(res, i, 3); - attdefault = PQgetisnull(res, i, 4) ? (char *) NULL : + attdefault = PQgetisnull(res, i, 4) ? NULL : PQgetvalue(res, i, 4); - attgenerated = PQgetisnull(res, i, 5) ? (char *) NULL : + attgenerated = PQgetisnull(res, i, 5) ? NULL : PQgetvalue(res, i, 5); - collname = PQgetisnull(res, i, 6) ? (char *) NULL : + collname = PQgetisnull(res, i, 6) ? NULL : PQgetvalue(res, i, 6); - collnamespace = PQgetisnull(res, i, 7) ? (char *) NULL : + collnamespace = PQgetisnull(res, i, 7) ? NULL : PQgetvalue(res, i, 7); if (first_item) diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c index fd389565123..124676b460a 100644 --- a/src/backend/access/transam/xlog.c +++ b/src/backend/access/transam/xlog.c @@ -4287,7 +4287,7 @@ WriteControlFile(void) /* Contents are protected with a CRC */ INIT_CRC32C(ControlFile->crc); COMP_CRC32C(ControlFile->crc, - (char *) ControlFile, + ControlFile, offsetof(ControlFileData, crc)); FIN_CRC32C(ControlFile->crc); @@ -4405,7 +4405,7 @@ ReadControlFile(void) /* Now check the CRC. */ INIT_CRC32C(crc); COMP_CRC32C(crc, - (char *) ControlFile, + ControlFile, offsetof(ControlFileData, crc)); FIN_CRC32C(crc); diff --git a/src/backend/libpq/auth.c b/src/backend/libpq/auth.c index d6ef32cc823..7884fb1df0c 100644 --- a/src/backend/libpq/auth.c +++ b/src/backend/libpq/auth.c @@ -2926,8 +2926,8 @@ PerformRadiusTransaction(const char *server, const char *secret, const char *por radius_packet radius_recv_pack; radius_packet *packet = &radius_send_pack; radius_packet *receivepacket = &radius_recv_pack; - char *radius_buffer = (char *) &radius_send_pack; - char *receive_buffer = (char *) &radius_recv_pack; + void *radius_buffer = &radius_send_pack; + void *receive_buffer = &radius_recv_pack; int32 service = pg_hton32(RADIUS_AUTHENTICATE_ONLY); uint8 *cryptvector; int encryptedpasswordlen; @@ -3198,7 +3198,9 @@ PerformRadiusTransaction(const char *server, const char *secret, const char *por * original packet */ if (packetlength > RADIUS_HEADER_LENGTH) /* there may be no * attributes at all */ - memcpy(cryptvector + RADIUS_HEADER_LENGTH, receive_buffer + RADIUS_HEADER_LENGTH, packetlength - RADIUS_HEADER_LENGTH); + memcpy(cryptvector + RADIUS_HEADER_LENGTH, + (char *) receive_buffer + RADIUS_HEADER_LENGTH, + packetlength - RADIUS_HEADER_LENGTH); memcpy(cryptvector + packetlength, secret, strlen(secret)); if (!pg_md5_binary(cryptvector, diff --git a/src/backend/libpq/pqcomm.c b/src/backend/libpq/pqcomm.c index 1bf27d93cfa..937a2b02a4f 100644 --- a/src/backend/libpq/pqcomm.c +++ b/src/backend/libpq/pqcomm.c @@ -1368,7 +1368,7 @@ internal_flush_buffer(const char *buf, size_t *start, size_t *end) { int r; - r = secure_write(MyProcPort, (char *) bufptr, bufend - bufptr); + r = secure_write(MyProcPort, unconstify(char *, bufptr), bufend - bufptr); if (r <= 0) { diff --git a/src/backend/nodes/copyfuncs.c b/src/backend/nodes/copyfuncs.c index 45915767825..475693b08bc 100644 --- a/src/backend/nodes/copyfuncs.c +++ b/src/backend/nodes/copyfuncs.c @@ -40,7 +40,7 @@ /* Copy a field that is a pointer to a C string, or perhaps NULL */ #define COPY_STRING_FIELD(fldname) \ - (newnode->fldname = from->fldname ? pstrdup(from->fldname) : (char *) NULL) + (newnode->fldname = from->fldname ? pstrdup(from->fldname) : NULL) /* Copy a field that is an inline array */ #define COPY_ARRAY_FIELD(fldname) \ diff --git a/src/backend/nodes/makefuncs.c b/src/backend/nodes/makefuncs.c index 007612563ca..dbbc2f1e30d 100644 --- a/src/backend/nodes/makefuncs.c +++ b/src/backend/nodes/makefuncs.c @@ -51,7 +51,7 @@ makeSimpleA_Expr(A_Expr_Kind kind, char *name, A_Expr *a = makeNode(A_Expr); a->kind = kind; - a->name = list_make1(makeString((char *) name)); + a->name = list_make1(makeString(name)); a->lexpr = lexpr; a->rexpr = rexpr; a->location = location; diff --git a/src/backend/storage/page/bufpage.c b/src/backend/storage/page/bufpage.c index 91da73dda8b..ecc81aacfc3 100644 --- a/src/backend/storage/page/bufpage.c +++ b/src/backend/storage/page/bufpage.c @@ -1502,7 +1502,7 @@ PageSetChecksumCopy(Page page, BlockNumber blkno) /* If we don't need a checksum, just return the passed-in data */ if (PageIsNew(page) || !DataChecksumsEnabled()) - return (char *) page; + return page; /* * We allocate the copy space once and use it over on each subsequent diff --git a/src/backend/utils/cache/relmapper.c b/src/backend/utils/cache/relmapper.c index 1e72a2c7fd6..30f968cd9cf 100644 --- a/src/backend/utils/cache/relmapper.c +++ b/src/backend/utils/cache/relmapper.c @@ -854,7 +854,7 @@ read_relmap_file(RelMapFile *map, char *dbpath, bool lock_held, int elevel) /* verify the CRC */ INIT_CRC32C(crc); - COMP_CRC32C(crc, (char *) map, offsetof(RelMapFile, crc)); + COMP_CRC32C(crc, map, offsetof(RelMapFile, crc)); FIN_CRC32C(crc); if (!EQ_CRC32C(crc, map->crc)) @@ -910,7 +910,7 @@ write_relmap_file(RelMapFile *newmap, bool write_wal, bool send_sinval, elog(ERROR, "attempt to write bogus relation mapping"); INIT_CRC32C(newmap->crc); - COMP_CRC32C(newmap->crc, (char *) newmap, offsetof(RelMapFile, crc)); + COMP_CRC32C(newmap->crc, newmap, offsetof(RelMapFile, crc)); FIN_CRC32C(newmap->crc); /* diff --git a/src/backend/utils/error/jsonlog.c b/src/backend/utils/error/jsonlog.c index 6533f1d6888..549e0f48ee8 100644 --- a/src/backend/utils/error/jsonlog.c +++ b/src/backend/utils/error/jsonlog.c @@ -206,7 +206,7 @@ write_jsonlog(ErrorData *edata) /* Error severity */ if (edata->elevel) appendJSONKeyValue(&buf, "error_severity", - (char *) error_severity(edata->elevel), true); + error_severity(edata->elevel), true); /* SQL state code */ if (edata->sqlerrcode) diff --git a/src/bin/pg_basebackup/pg_receivewal.c b/src/bin/pg_basebackup/pg_receivewal.c index 176c40facad..de3584018b0 100644 --- a/src/bin/pg_basebackup/pg_receivewal.c +++ b/src/bin/pg_basebackup/pg_receivewal.c @@ -342,7 +342,7 @@ FindStreamingStart(uint32 *tli) if (lseek(fd, (off_t) (-4), SEEK_END) < 0) pg_fatal("could not seek in compressed file \"%s\": %m", fullpath); - r = read(fd, (char *) buf, sizeof(buf)); + r = read(fd, buf, sizeof(buf)); if (r != sizeof(buf)) { if (r < 0) diff --git a/src/bin/pg_dump/compress_gzip.c b/src/bin/pg_dump/compress_gzip.c index f9e5f00aaa1..23f617209e6 100644 --- a/src/bin/pg_dump/compress_gzip.c +++ b/src/bin/pg_dump/compress_gzip.c @@ -129,7 +129,7 @@ DeflateCompressorCommon(ArchiveHandle *AH, CompressorState *cs, bool flush) */ size_t len = gzipcs->outsize - zp->avail_out; - cs->writeF(AH, (char *) out, len); + cs->writeF(AH, out, len); } zp->next_out = out; zp->avail_out = gzipcs->outsize; diff --git a/src/bin/pg_rewind/pg_rewind.c b/src/bin/pg_rewind/pg_rewind.c index cae81cd6cb1..2ce99d06d1d 100644 --- a/src/bin/pg_rewind/pg_rewind.c +++ b/src/bin/pg_rewind/pg_rewind.c @@ -1007,7 +1007,7 @@ checkControlFile(ControlFileData *ControlFile) /* Calculate CRC */ INIT_CRC32C(crc); - COMP_CRC32C(crc, (char *) ControlFile, offsetof(ControlFileData, crc)); + COMP_CRC32C(crc, ControlFile, offsetof(ControlFileData, crc)); FIN_CRC32C(crc); /* And simply compare it */ diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c index aa4363b200a..b3d421850bf 100644 --- a/src/bin/psql/describe.c +++ b/src/bin/psql/describe.c @@ -1741,7 +1741,7 @@ describeOneTableDetails(const char *schemaname, *(PQgetvalue(res, 0, 13)) : 'd'; if (pset.sversion >= 120000) tableinfo.relam = PQgetisnull(res, 0, 14) ? - (char *) NULL : pg_strdup(PQgetvalue(res, 0, 14)); + NULL : pg_strdup(PQgetvalue(res, 0, 14)); else tableinfo.relam = NULL; PQclear(res); diff --git a/src/common/controldata_utils.c b/src/common/controldata_utils.c index 27ce27d7647..34d8a3a4e31 100644 --- a/src/common/controldata_utils.c +++ b/src/common/controldata_utils.c @@ -135,7 +135,7 @@ get_controlfile_by_exact_path(const char *ControlFilePath, bool *crc_ok_p) /* Check the CRC. */ INIT_CRC32C(crc); COMP_CRC32C(crc, - (char *) ControlFile, + ControlFile, offsetof(ControlFileData, crc)); FIN_CRC32C(crc); @@ -199,7 +199,7 @@ update_controlfile(const char *DataDir, /* Recalculate CRC of control file */ INIT_CRC32C(ControlFile->crc); COMP_CRC32C(ControlFile->crc, - (char *) ControlFile, + ControlFile, offsetof(ControlFileData, crc)); FIN_CRC32C(ControlFile->crc); diff --git a/src/interfaces/ecpg/ecpglib/descriptor.c b/src/interfaces/ecpg/ecpglib/descriptor.c index 8525a6812f2..651d5c8b2ed 100644 --- a/src/interfaces/ecpg/ecpglib/descriptor.c +++ b/src/interfaces/ecpg/ecpglib/descriptor.c @@ -198,7 +198,7 @@ get_char_item(int lineno, void *var, enum ECPGttype vartype, char *value, int va case ECPGt_char: case ECPGt_unsigned_char: case ECPGt_string: - strncpy((char *) var, value, varcharsize); + strncpy(var, value, varcharsize); break; case ECPGt_varchar: { @@ -597,7 +597,7 @@ set_desc_attr(struct descriptor_item *desc_item, struct variable *var, } ecpg_free(desc_item->data); /* free() takes care of a potential NULL value */ - desc_item->data = (char *) tobeinserted; + desc_item->data = tobeinserted; } diff --git a/src/interfaces/ecpg/ecpglib/execute.c b/src/interfaces/ecpg/ecpglib/execute.c index b5089eac787..f52da06de9a 100644 --- a/src/interfaces/ecpg/ecpglib/execute.c +++ b/src/interfaces/ecpg/ecpglib/execute.c @@ -278,7 +278,7 @@ ecpg_is_type_an_array(int type, const struct statement *stmt, const struct varia isarray = ECPG_ARRAY_NONE; else { - isarray = (atoi((char *) PQgetvalue(query, 0, 0)) == -1) ? ECPG_ARRAY_ARRAY : ECPG_ARRAY_VECTOR; + isarray = (atoi(PQgetvalue(query, 0, 0)) == -1) ? ECPG_ARRAY_ARRAY : ECPG_ARRAY_VECTOR; if (ecpg_dynamic_type(type) == SQL3_CHARACTER || ecpg_dynamic_type(type) == SQL3_CHARACTER_VARYING) { diff --git a/src/interfaces/ecpg/pgtypeslib/numeric.c b/src/interfaces/ecpg/pgtypeslib/numeric.c index 35e7b92da40..bb2a86981ca 100644 --- a/src/interfaces/ecpg/pgtypeslib/numeric.c +++ b/src/interfaces/ecpg/pgtypeslib/numeric.c @@ -232,7 +232,7 @@ get_str_from_var(numeric *var, int dscale) if (var->sign == NUMERIC_NAN) { - str = (char *) pgtypes_alloc(4); + str = pgtypes_alloc(4); if (str == NULL) return NULL; sprintf(str, "NaN"); @@ -269,7 +269,7 @@ get_str_from_var(numeric *var, int dscale) /* * Allocate space for the result */ - if ((str = (char *) pgtypes_alloc(Max(0, dscale) + Max(0, var->weight) + 4)) == NULL) + if ((str = pgtypes_alloc(Max(0, dscale) + Max(0, var->weight) + 4)) == NULL) return NULL; cp = str; -- 2.48.1