LCOV - differential code coverage report
Current view: top level - src/common - fe_memutils.c (source / functions) Coverage Total Hit UBC CBC
Current: Differential Code Coverage 16@8cea358b128 vs 17@8cea358b128 Lines: 73.8 % 65 48 17 48
Current Date: 2024-04-14 14:21:10 Functions: 100.0 % 14 14 14
Baseline: 16@8cea358b128 Branches: 65.6 % 32 21 11 21
Baseline Date: 2024-04-14 14:21:09 Line coverage date bins:
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed (240..) days: 73.8 % 65 48 17 48
Function coverage date bins:
(240..) days: 100.0 % 14 14 14
Branch coverage date bins:
(240..) days: 65.6 % 32 21 11 21

 Age         Owner                    Branch data    TLA  Line data    Source code
                                  1                 :                : /*-------------------------------------------------------------------------
                                  2                 :                :  *
                                  3                 :                :  * fe_memutils.c
                                  4                 :                :  *    memory management support for frontend code
                                  5                 :                :  *
                                  6                 :                :  * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
                                  7                 :                :  * Portions Copyright (c) 1994, Regents of the University of California
                                  8                 :                :  *
                                  9                 :                :  *
                                 10                 :                :  * IDENTIFICATION
                                 11                 :                :  *    src/common/fe_memutils.c
                                 12                 :                :  *
                                 13                 :                :  *-------------------------------------------------------------------------
                                 14                 :                :  */
                                 15                 :                : 
                                 16                 :                : #ifndef FRONTEND
                                 17                 :                : #error "This file is not expected to be compiled for backend code"
                                 18                 :                : #endif
                                 19                 :                : 
                                 20                 :                : #include "postgres_fe.h"
                                 21                 :                : 
                                 22                 :                : static inline void *
 3299 fujii@postgresql.org       23                 :CBC     3559969 : pg_malloc_internal(size_t size, int flags)
                                 24                 :                : {
                                 25                 :                :     void       *tmp;
                                 26                 :                : 
                                 27                 :                :     /* Avoid unportable behavior of malloc(0) */
 4079 alvherre@alvh.no-ip.       28         [ +  + ]:        3559969 :     if (size == 0)
                                 29                 :           3288 :         size = 1;
                                 30                 :        3559969 :     tmp = malloc(size);
 3299 fujii@postgresql.org       31         [ -  + ]:        3559969 :     if (tmp == NULL)
                                 32                 :                :     {
 3299 fujii@postgresql.org       33         [ #  # ]:UBC           0 :         if ((flags & MCXT_ALLOC_NO_OOM) == 0)
                                 34                 :                :         {
                                 35                 :              0 :             fprintf(stderr, _("out of memory\n"));
                                 36                 :              0 :             exit(EXIT_FAILURE);
                                 37                 :                :         }
                                 38                 :              0 :         return NULL;
                                 39                 :                :     }
                                 40                 :                : 
 3299 fujii@postgresql.org       41         [ +  + ]:CBC     3559969 :     if ((flags & MCXT_ALLOC_ZERO) != 0)
                                 42   [ +  -  +  +  :        4065795 :         MemSet(tmp, 0, size);
                                     +  -  +  +  +  
                                                 + ]
 4079 alvherre@alvh.no-ip.       43                 :        3559969 :     return tmp;
                                 44                 :                : }
                                 45                 :                : 
                                 46                 :                : void *
 3299 fujii@postgresql.org       47                 :        1443528 : pg_malloc(size_t size)
                                 48                 :                : {
                                 49                 :        1443528 :     return pg_malloc_internal(size, 0);
                                 50                 :                : }
                                 51                 :                : 
                                 52                 :                : void *
 4079 alvherre@alvh.no-ip.       53                 :        1110233 : pg_malloc0(size_t size)
                                 54                 :                : {
 3299 fujii@postgresql.org       55                 :        1110233 :     return pg_malloc_internal(size, MCXT_ALLOC_ZERO);
                                 56                 :                : }
                                 57                 :                : 
                                 58                 :                : void *
                                 59                 :         119286 : pg_malloc_extended(size_t size, int flags)
                                 60                 :                : {
                                 61                 :         119286 :     return pg_malloc_internal(size, flags);
                                 62                 :                : }
                                 63                 :                : 
                                 64                 :                : void *
 4079 alvherre@alvh.no-ip.       65                 :          54417 : pg_realloc(void *ptr, size_t size)
                                 66                 :                : {
                                 67                 :                :     void       *tmp;
                                 68                 :                : 
                                 69                 :                :     /* Avoid unportable behavior of realloc(NULL, 0) */
 3973 bruce@momjian.us           70   [ +  +  -  + ]:          54417 :     if (ptr == NULL && size == 0)
 3973 bruce@momjian.us           71                 :UBC           0 :         size = 1;
 3973 bruce@momjian.us           72                 :CBC       54417 :     tmp = realloc(ptr, size);
                                 73         [ -  + ]:          54417 :     if (!tmp)
                                 74                 :                :     {
 4079 alvherre@alvh.no-ip.       75                 :UBC           0 :         fprintf(stderr, _("out of memory\n"));
                                 76                 :              0 :         exit(EXIT_FAILURE);
                                 77                 :                :     }
 3973 bruce@momjian.us           78                 :CBC       54417 :     return tmp;
                                 79                 :                : }
                                 80                 :                : 
                                 81                 :                : /*
                                 82                 :                :  * "Safe" wrapper around strdup().
                                 83                 :                :  */
                                 84                 :                : char *
 4079 alvherre@alvh.no-ip.       85                 :        5158403 : pg_strdup(const char *in)
                                 86                 :                : {
                                 87                 :                :     char       *tmp;
                                 88                 :                : 
                                 89         [ -  + ]:        5158403 :     if (!in)
                                 90                 :                :     {
 4079 alvherre@alvh.no-ip.       91                 :UBC           0 :         fprintf(stderr,
                                 92                 :              0 :                 _("cannot duplicate null pointer (internal error)\n"));
                                 93                 :              0 :         exit(EXIT_FAILURE);
                                 94                 :                :     }
 4079 alvherre@alvh.no-ip.       95                 :CBC     5158403 :     tmp = strdup(in);
                                 96         [ -  + ]:        5158403 :     if (!tmp)
                                 97                 :                :     {
 4079 alvherre@alvh.no-ip.       98                 :UBC           0 :         fprintf(stderr, _("out of memory\n"));
                                 99                 :              0 :         exit(EXIT_FAILURE);
                                100                 :                :     }
 4079 alvherre@alvh.no-ip.      101                 :CBC     5158403 :     return tmp;
                                102                 :                : }
                                103                 :                : 
                                104                 :                : void
                                105                 :        2845717 : pg_free(void *ptr)
                                106                 :                : {
  668 peter@eisentraut.org      107                 :        2845717 :     free(ptr);
 4079 alvherre@alvh.no-ip.      108                 :        2845717 : }
                                109                 :                : 
                                110                 :                : /*
                                111                 :                :  * Frontend emulation of backend memory management functions.  Useful for
                                112                 :                :  * programs that compile backend files.
                                113                 :                :  */
                                114                 :                : void *
                                115                 :         885517 : palloc(Size size)
                                116                 :                : {
 3299 fujii@postgresql.org      117                 :         885517 :     return pg_malloc_internal(size, 0);
                                118                 :                : }
                                119                 :                : 
                                120                 :                : void *
 4079 alvherre@alvh.no-ip.      121                 :           1090 : palloc0(Size size)
                                122                 :                : {
 3299 fujii@postgresql.org      123                 :           1090 :     return pg_malloc_internal(size, MCXT_ALLOC_ZERO);
                                124                 :                : }
                                125                 :                : 
                                126                 :                : void *
                                127                 :            315 : palloc_extended(Size size, int flags)
                                128                 :                : {
                                129                 :            315 :     return pg_malloc_internal(size, flags);
                                130                 :                : }
                                131                 :                : 
                                132                 :                : void
 4079 alvherre@alvh.no-ip.      133                 :        1506752 : pfree(void *pointer)
                                134                 :                : {
                                135                 :        1506752 :     pg_free(pointer);
                                136                 :        1506752 : }
                                137                 :                : 
                                138                 :                : char *
                                139                 :         877963 : pstrdup(const char *in)
                                140                 :                : {
                                141                 :         877963 :     return pg_strdup(in);
                                142                 :                : }
                                143                 :                : 
                                144                 :                : char *
 1593                           145                 :            148 : pnstrdup(const char *in, Size size)
                                146                 :                : {
                                147                 :                :     char       *tmp;
                                148                 :                :     int         len;
                                149                 :                : 
                                150         [ -  + ]:            148 :     if (!in)
                                151                 :                :     {
 1593 alvherre@alvh.no-ip.      152                 :UBC           0 :         fprintf(stderr,
                                153                 :              0 :                 _("cannot duplicate null pointer (internal error)\n"));
                                154                 :              0 :         exit(EXIT_FAILURE);
                                155                 :                :     }
                                156                 :                : 
 1593 alvherre@alvh.no-ip.      157                 :CBC         148 :     len = strnlen(in, size);
                                158                 :            148 :     tmp = malloc(len + 1);
                                159         [ -  + ]:            148 :     if (tmp == NULL)
                                160                 :                :     {
 1593 alvherre@alvh.no-ip.      161                 :UBC           0 :         fprintf(stderr, _("out of memory\n"));
                                162                 :              0 :         exit(EXIT_FAILURE);
                                163                 :                :     }
                                164                 :                : 
 1593 alvherre@alvh.no-ip.      165                 :CBC         148 :     memcpy(tmp, in, len);
                                166                 :            148 :     tmp[len] = '\0';
                                167                 :                : 
                                168                 :            148 :     return tmp;
                                169                 :                : }
                                170                 :                : 
                                171                 :                : void *
 4079                           172                 :          29303 : repalloc(void *pointer, Size size)
                                173                 :                : {
                                174                 :          29303 :     return pg_realloc(pointer, size);
                                175                 :                : }
        

Generated by: LCOV version 2.1-beta2-3-g6141622