Remove unnecessary (char *) casts [mem]
authorPeter Eisentraut
Wed, 12 Feb 2025 07:50:13 +0000 (08:50 +0100)
committerPeter Eisentraut
Wed, 12 Feb 2025 07:50:13 +0000 (08:50 +0100)
Remove (char *) casts around memory functions such as memcmp(),
memcpy(), or memset() where the cast is useless.  Since these
functions don't take char * arguments anyway, these casts are at best
complicated casts to (void *), about which see commit 7f798aca1d5.

Reviewed-by: Dagfinn Ilmari Mannsåker
Discussion: https://www.postgresql.org/message-id/flat/fd1fcedb-3492-4fc8-9e3e-74b97f2db6c7%40eisentraut.org

20 files changed:
contrib/pg_trgm/trgm_gist.c
contrib/xml2/xpath.c
src/backend/access/common/heaptuple.c
src/backend/access/heap/heapam_xlog.c
src/backend/access/table/toast_helper.c
src/backend/access/transam/xlog.c
src/backend/access/transam/xlogreader.c
src/backend/bootstrap/bootstrap.c
src/backend/libpq/be-secure-gssapi.c
src/backend/replication/logical/decode.c
src/backend/storage/buffer/bufmgr.c
src/backend/storage/buffer/localbuf.c
src/backend/storage/file/fd.c
src/backend/storage/page/bufpage.c
src/backend/tcop/postgres.c
src/backend/utils/activity/backend_status.c
src/interfaces/ecpg/compatlib/informix.c
src/interfaces/ecpg/ecpglib/misc.c
src/interfaces/libpq/fe-lobj.c
src/interfaces/libpq/fe-secure-gssapi.c

index 7f482f958fd2fc1c4dfac7ce7ba5087f90661116..14285a919ad80f9651a709c66e0572857b4d4e24 100644 (file)
@@ -228,7 +228,7 @@ gtrgm_consistent(PG_FUNCTION_ARGS)
    if (cache == NULL ||
        cache->strategy != strategy ||
        VARSIZE(cache->query) != querysize ||
-       memcmp((char *) cache->query, (char *) query, querysize) != 0)
+       memcmp(cache->query, query, querysize) != 0)
    {
        gtrgm_consistent_cache *newcache;
        TrgmPackedGraph *graph = NULL;
@@ -284,12 +284,12 @@ gtrgm_consistent(PG_FUNCTION_ARGS)
        newcache->strategy = strategy;
        newcache->query = (text *)
            ((char *) newcache + MAXALIGN(sizeof(gtrgm_consistent_cache)));
-       memcpy((char *) newcache->query, (char *) query, querysize);
+       memcpy(newcache->query, query, querysize);
        if (qtrg)
        {
            newcache->trigrams = (TRGM *)
                ((char *) newcache->query + MAXALIGN(querysize));
-           memcpy((char *) newcache->trigrams, (char *) qtrg, qtrgsize);
+           memcpy((char *) newcache->trigrams, qtrg, qtrgsize);
            /* release qtrg in case it was made in fn_mcxt */
            pfree(qtrg);
        }
index f7e3f485fe1f331d7fc6a630ee42a86414850aa0..19180b9a6c2005d0ff61b14e1afaedc9d489f011 100644 (file)
@@ -278,8 +278,8 @@ xpath_string(PG_FUNCTION_ARGS)
    /* We could try casting to string using the libxml function? */
 
    xpath = (xmlChar *) palloc(pathsize + 9);
-   memcpy((char *) xpath, "string(", 7);
-   memcpy((char *) (xpath + 7), VARDATA_ANY(xpathsupp), pathsize);
+   memcpy(xpath, "string(", 7);
+   memcpy(xpath + 7, VARDATA_ANY(xpathsupp), pathsize);
    xpath[pathsize + 7] = ')';
    xpath[pathsize + 8] = '\0';
 
index b43cb9ccff4621d850e8669948aded295bb75831..acd5da4ccf80ddde9c39a2ad8c96dfd84b83a07d 100644 (file)
@@ -787,7 +787,7 @@ heap_copytuple(HeapTuple tuple)
    newTuple->t_self = tuple->t_self;
    newTuple->t_tableOid = tuple->t_tableOid;
    newTuple->t_data = (HeapTupleHeader) ((char *) newTuple + HEAPTUPLESIZE);
-   memcpy((char *) newTuple->t_data, (char *) tuple->t_data, tuple->t_len);
+   memcpy(newTuple->t_data, tuple->t_data, tuple->t_len);
    return newTuple;
 }
 
@@ -813,7 +813,7 @@ heap_copytuple_with_tuple(HeapTuple src, HeapTuple dest)
    dest->t_self = src->t_self;
    dest->t_tableOid = src->t_tableOid;
    dest->t_data = (HeapTupleHeader) palloc(src->t_len);
-   memcpy((char *) dest->t_data, (char *) src->t_data, src->t_len);
+   memcpy(dest->t_data, src->t_data, src->t_len);
 }
 
 /*
@@ -1097,7 +1097,7 @@ heap_copy_tuple_as_datum(HeapTuple tuple, TupleDesc tupleDesc)
     * the given tuple came from disk, rather than from heap_form_tuple).
     */
    td = (HeapTupleHeader) palloc(tuple->t_len);
-   memcpy((char *) td, (char *) tuple->t_data, tuple->t_len);
+   memcpy(td, tuple->t_data, tuple->t_len);
 
    HeapTupleHeaderSetDatumLength(td, tuple->t_len);
    HeapTupleHeaderSetTypeId(td, tupleDesc->tdtypeid);
index 469d11d591278a5a522063bb2169a05484561b13..30f4c2d3c671937bd1ddb85baead1ec13103c09e 100644 (file)
@@ -480,11 +480,11 @@ heap_xlog_insert(XLogReaderState *record)
 
        newlen = datalen - SizeOfHeapHeader;
        Assert(datalen > SizeOfHeapHeader && newlen <= MaxHeapTupleSize);
-       memcpy((char *) &xlhdr, data, SizeOfHeapHeader);
+       memcpy(&xlhdr, data, SizeOfHeapHeader);
        data += SizeOfHeapHeader;
 
        htup = &tbuf.hdr;
-       MemSet((char *) htup, 0, SizeofHeapTupleHeader);
+       MemSet(htup, 0, SizeofHeapTupleHeader);
        /* PG73FORMAT: get bitmap [+ padding] [+ oid] + data */
        memcpy((char *) htup + SizeofHeapTupleHeader,
               data,
@@ -625,10 +625,10 @@ heap_xlog_multi_insert(XLogReaderState *record)
            newlen = xlhdr->datalen;
            Assert(newlen <= MaxHeapTupleSize);
            htup = &tbuf.hdr;
-           MemSet((char *) htup, 0, SizeofHeapTupleHeader);
+           MemSet(htup, 0, SizeofHeapTupleHeader);
            /* PG73FORMAT: get bitmap [+ padding] [+ oid] + data */
            memcpy((char *) htup + SizeofHeapTupleHeader,
-                  (char *) tupdata,
+                  tupdata,
                   newlen);
            tupdata += newlen;
 
@@ -854,14 +854,14 @@ heap_xlog_update(XLogReaderState *record, bool hot_update)
            recdata += sizeof(uint16);
        }
 
-       memcpy((char *) &xlhdr, recdata, SizeOfHeapHeader);
+       memcpy(&xlhdr, recdata, SizeOfHeapHeader);
        recdata += SizeOfHeapHeader;
 
        tuplen = recdata_end - recdata;
        Assert(tuplen <= MaxHeapTupleSize);
 
        htup = &tbuf.hdr;
-       MemSet((char *) htup, 0, SizeofHeapTupleHeader);
+       MemSet(htup, 0, SizeofHeapTupleHeader);
 
        /*
         * Reconstruct the new tuple using the prefix and/or suffix from the
index c63052f96eb2e4b336922e37b91173332afba8e4..b60fab0a4d29436b012a56d82890770c02010e9b 100644 (file)
@@ -75,7 +75,7 @@ toast_tuple_init(ToastTupleContext *ttc)
            {
                if (ttc->ttc_isnull[i] ||
                    !VARATT_IS_EXTERNAL_ONDISK(new_value) ||
-                   memcmp((char *) old_value, (char *) new_value,
+                   memcmp(old_value, new_value,
                           VARSIZE_EXTERNAL(old_value)) != 0)
                {
                    /*
index 9c270e7d466ceec01958225af83a8698562f015f..fd38956512329550a9a40163245d98140182bf64 100644 (file)
@@ -2089,7 +2089,7 @@ AdvanceXLInsertBuffer(XLogRecPtr upto, TimeLineID tli, bool opportunistic)
         * Be sure to re-zero the buffer so that bytes beyond what we've
         * written will look like zeroes and not valid XLOG records...
         */
-       MemSet((char *) NewPage, 0, XLOG_BLCKSZ);
+       MemSet(NewPage, 0, XLOG_BLCKSZ);
 
        /*
         * Fill the new page's header
index 6cf5ef90be0fb8cf4cbc81ef4cefb7b045f93fd8..31bffc6f5019599c97ec6789fe7e2ef29a13c492 100644 (file)
@@ -794,7 +794,7 @@ restart:
                readOff = ReadPageInternal(state, targetPagePtr,
                                           pageHeaderSize + len);
 
-           memcpy(buffer, (char *) contdata, len);
+           memcpy(buffer, contdata, len);
            buffer += len;
            gotlen += len;
 
index 359f58a8f956886c1a5894fbae7cceb4d64ac064..6db864892d0ddeb282bf0f71a0f211b0b5566e61 100644 (file)
@@ -463,8 +463,8 @@ boot_openrel(char *relname)
    {
        if (attrtypes[i] == NULL)
            attrtypes[i] = AllocateAttribute();
-       memmove((char *) attrtypes[i],
-               (char *) TupleDescAttr(boot_reldesc->rd_att, i),
+       memmove(attrtypes[i],
+               TupleDescAttr(boot_reldesc->rd_att, i),
                ATTRIBUTE_FIXED_PART_SIZE);
 
        {
index fc5a8d82a9dd933e14969c349446ed119a745c99..a3d610b1373da60a6100230051a18b8aa4a4f79e 100644 (file)
@@ -641,7 +641,7 @@ secure_open_gssapi(Port *port)
                return -1;
            }
 
-           memcpy(PqGSSSendBuffer, (char *) &netlen, sizeof(uint32));
+           memcpy(PqGSSSendBuffer, &netlen, sizeof(uint32));
            PqGSSSendLength += sizeof(uint32);
 
            memcpy(PqGSSSendBuffer + PqGSSSendLength, output.value, output.length);
index 0bff0f106529f50ea693dadcafe65a91b56113d6..24d88f368d8580b5fde934df9445d8dba83af914 100644 (file)
@@ -1177,9 +1177,7 @@ DecodeMultiInsert(LogicalDecodingContext *ctx, XLogRecordBuffer *buf)
 
        memset(header, 0, SizeofHeapTupleHeader);
 
-       memcpy((char *) tuple->t_data + SizeofHeapTupleHeader,
-              (char *) data,
-              datalen);
+       memcpy((char *) tuple->t_data + SizeofHeapTupleHeader, data, datalen);
        header->t_infomask = xlhdr->t_infomask;
        header->t_infomask2 = xlhdr->t_infomask2;
        header->t_hoff = xlhdr->t_hoff;
@@ -1265,9 +1263,7 @@ DecodeXLogTuple(char *data, Size len, HeapTuple tuple)
    tuple->t_tableOid = InvalidOid;
 
    /* data is not stored aligned, copy to aligned storage */
-   memcpy((char *) &xlhdr,
-          data,
-          SizeOfHeapHeader);
+   memcpy(&xlhdr, data, SizeOfHeapHeader);
 
    memset(header, 0, SizeofHeapTupleHeader);
 
index ee83669992b8ffc1449b0ba033fef6e938626a35..b5938f1b473d935e043aec002f5987e8322733a0 100644 (file)
@@ -2221,7 +2221,7 @@ ExtendBufferedRelShared(BufferManagerRelation bmr,
        buf_block = BufHdrGetBlock(GetBufferDescriptor(buffers[i] - 1));
 
        /* new buffers are zero-filled */
-       MemSet((char *) buf_block, 0, BLCKSZ);
+       MemSet(buf_block, 0, BLCKSZ);
    }
 
    /*
index 8f81428970b88ea05fbe93bab69dc6bb351b6e3b..64931efaa75639f80e73ecc54bb5deac7d32e24e 100644 (file)
@@ -338,7 +338,7 @@ ExtendBufferedRelLocal(BufferManagerRelation bmr,
        buf_block = LocalBufHdrGetBlock(buf_hdr);
 
        /* new buffers are zero-filled */
-       MemSet((char *) buf_block, 0, BLCKSZ);
+       MemSet(buf_block, 0, BLCKSZ);
    }
 
    first_block = smgrnblocks(bmr.smgr, fork);
index 843d1021cf9cbe988df8d47e645cd2cbfe276f12..e454db4c020d22891d72c4d1921879f009d2d80c 100644 (file)
@@ -910,7 +910,7 @@ InitFileAccess(void)
                (errcode(ERRCODE_OUT_OF_MEMORY),
                 errmsg("out of memory")));
 
-   MemSet((char *) &(VfdCache[0]), 0, sizeof(Vfd));
+   MemSet(&(VfdCache[0]), 0, sizeof(Vfd));
    VfdCache->fd = VFD_CLOSED;
 
    SizeVfdCache = 1;
@@ -1447,7 +1447,7 @@ AllocateVfd(void)
         */
        for (i = SizeVfdCache; i < newCacheSize; i++)
        {
-           MemSet((char *) &(VfdCache[i]), 0, sizeof(Vfd));
+           MemSet(&(VfdCache[i]), 0, sizeof(Vfd));
            VfdCache[i].nextFree = i + 1;
            VfdCache[i].fd = VFD_CLOSED;
        }
index a931cdba1512c5d88368f6951d62f5692ef77761..424dd3f4bfb3192151d01f5a43a02035e672feef 100644 (file)
@@ -415,7 +415,7 @@ PageRestoreTempPage(Page tempPage, Page oldPage)
    Size        pageSize;
 
    pageSize = PageGetPageSize(tempPage);
-   memcpy((char *) oldPage, (char *) tempPage, pageSize);
+   memcpy(oldPage, tempPage, pageSize);
 
    pfree(tempPage);
 }
@@ -1094,8 +1094,8 @@ PageIndexTupleDelete(Page page, OffsetNumber offnum)
        ((char *) &phdr->pd_linp[offidx + 1] - (char *) phdr);
 
    if (nbytes > 0)
-       memmove((char *) &(phdr->pd_linp[offidx]),
-               (char *) &(phdr->pd_linp[offidx + 1]),
+       memmove(&(phdr->pd_linp[offidx]),
+               &(phdr->pd_linp[offidx + 1]),
                nbytes);
 
    /*
@@ -1516,7 +1516,7 @@ PageSetChecksumCopy(Page page, BlockNumber blkno)
                                             PG_IO_ALIGN_SIZE,
                                             0);
 
-   memcpy(pageCopy, (char *) page, BLCKSZ);
+   memcpy(pageCopy, page, BLCKSZ);
    ((PageHeader) pageCopy)->pd_checksum = pg_checksum_page(pageCopy, blkno);
    return pageCopy;
 }
index 5655348a2e2901ca07f4fa6cea73864467cc71fb..1149d89d7a173619a5a328ffc3c6f2b512f44b1c 100644 (file)
@@ -4991,8 +4991,8 @@ ShowUsage(const char *title)
 
    getrusage(RUSAGE_SELF, &r);
    gettimeofday(&elapse_t, NULL);
-   memcpy((char *) &user, (char *) &r.ru_utime, sizeof(user));
-   memcpy((char *) &sys, (char *) &r.ru_stime, sizeof(sys));
+   memcpy(&user, &r.ru_utime, sizeof(user));
+   memcpy(&sys, &r.ru_stime, sizeof(sys));
    if (elapse_t.tv_usec < Save_t.tv_usec)
    {
        elapse_t.tv_sec--;
index ae8e54c744267f80c1802a3a4921406c69b2c4e8..5f68ef26adc69f9c2c43616933f004c71118e6d1 100644 (file)
@@ -597,7 +597,7 @@ pgstat_report_activity(BackendState state, const char *cmd_str)
 
    if (cmd_str != NULL)
    {
-       memcpy((char *) beentry->st_activity_raw, cmd_str, len);
+       memcpy(beentry->st_activity_raw, cmd_str, len);
        beentry->st_activity_raw[len] = '\0';
        beentry->st_activity_start_timestamp = start_timestamp;
    }
@@ -670,7 +670,7 @@ pgstat_report_appname(const char *appname)
     */
    PGSTAT_BEGIN_WRITE_ACTIVITY(beentry);
 
-   memcpy((char *) beentry->st_appname, appname, len);
+   memcpy(beentry->st_appname, appname, len);
    beentry->st_appname[len] = '\0';
 
    PGSTAT_END_WRITE_ACTIVITY(beentry);
index 65a0b2e46c4c85ee9357d79419fde36778960d19..e829d722f2228d42faeba1886ee57f789725edc0 100644 (file)
@@ -1035,7 +1035,7 @@ ECPG_informix_reset_sqlca(void)
    if (sqlca == NULL)
        return;
 
-   memcpy((char *) sqlca, (char *) &sqlca_init, sizeof(struct sqlca_t));
+   memcpy(sqlca, &sqlca_init, sizeof(struct sqlca_t));
 }
 
 int
index 8b38c3eccfde01d49ce6d09ee26f47ba0113ae7c..1885732a65203b4f9fdfe407ff8b9bb9cb6e5add 100644 (file)
@@ -66,7 +66,7 @@ static FILE *debugstream = NULL;
 void
 ecpg_init_sqlca(struct sqlca_t *sqlca)
 {
-   memcpy((char *) sqlca, (char *) &sqlca_init, sizeof(struct sqlca_t));
+   memcpy(sqlca, &sqlca_init, sizeof(struct sqlca_t));
 }
 
 bool
@@ -316,10 +316,10 @@ ECPGset_noind_null(enum ECPGttype type, void *ptr)
            *((long long *) ptr) = LONG_LONG_MIN;
            break;
        case ECPGt_float:
-           memset((char *) ptr, 0xff, sizeof(float));
+           memset(ptr, 0xff, sizeof(float));
            break;
        case ECPGt_double:
-           memset((char *) ptr, 0xff, sizeof(double));
+           memset(ptr, 0xff, sizeof(double));
            break;
        case ECPGt_varchar:
            *(((struct ECPGgeneric_varchar *) ptr)->arr) = 0x00;
@@ -329,18 +329,18 @@ ECPGset_noind_null(enum ECPGttype type, void *ptr)
            ((struct ECPGgeneric_bytea *) ptr)->len = 0;
            break;
        case ECPGt_decimal:
-           memset((char *) ptr, 0, sizeof(decimal));
+           memset(ptr, 0, sizeof(decimal));
            ((decimal *) ptr)->sign = NUMERIC_NULL;
            break;
        case ECPGt_numeric:
-           memset((char *) ptr, 0, sizeof(numeric));
+           memset(ptr, 0, sizeof(numeric));
            ((numeric *) ptr)->sign = NUMERIC_NULL;
            break;
        case ECPGt_interval:
-           memset((char *) ptr, 0xff, sizeof(interval));
+           memset(ptr, 0xff, sizeof(interval));
            break;
        case ECPGt_timestamp:
-           memset((char *) ptr, 0xff, sizeof(timestamp));
+           memset(ptr, 0xff, sizeof(timestamp));
            break;
        default:
            break;
index 45edbae6717fe44ce52bdd19b6c3a67d106660c0..04b3aef8854e8f3bb9f9d2f29f80433dff7890c2 100644 (file)
@@ -870,7 +870,7 @@ lo_initialize(PGconn *conn)
        libpq_append_conn_error(conn, "out of memory");
        return -1;
    }
-   MemSet((char *) lobjfuncs, 0, sizeof(PGlobjfuncs));
+   MemSet(lobjfuncs, 0, sizeof(PGlobjfuncs));
 
    /*
     * Execute the query to get all the functions at once.  (Not all of them
index 190a8894ff0ab5a712be2a8a20cfa75a8069e5d7..ce183bc04b4c851595833fd3d120f925150486a2 100644 (file)
@@ -698,7 +698,7 @@ pqsecure_open_gss(PGconn *conn)
    /* Queue the token for writing */
    netlen = pg_hton32(output.length);
 
-   memcpy(PqGSSSendBuffer, (char *) &netlen, sizeof(uint32));
+   memcpy(PqGSSSendBuffer, &netlen, sizeof(uint32));
    PqGSSSendLength += sizeof(uint32);
 
    memcpy(PqGSSSendBuffer + PqGSSSendLength, output.value, output.length);