1
/* $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/memory.c,v 1.6 2004-12-30 09:36:37 meskes Exp $ */
3
#define POSTGRES_ECPG_INTERNAL
4
#include "postgres_fe.h"
18
ECPGalloc(long size, int lineno)
20
char *new = (char *) calloc(1L, size);
24
ECPGraise(lineno, ECPG_OUT_OF_MEMORY, ECPG_SQLSTATE_ECPG_OUT_OF_MEMORY, NULL);
28
memset(new, '\0', size);
33
ECPGrealloc(void *ptr, long size, int lineno)
35
char *new = (char *) realloc(ptr, size);
39
ECPGraise(lineno, ECPG_OUT_OF_MEMORY, ECPG_SQLSTATE_ECPG_OUT_OF_MEMORY, NULL);
47
ECPGstrdup(const char *string, int lineno)
57
ECPGraise(lineno, ECPG_OUT_OF_MEMORY, ECPG_SQLSTATE_ECPG_OUT_OF_MEMORY, NULL);
64
/* keep a list of memory we allocated for the user */
65
static struct auto_mem
68
struct auto_mem *next;
69
} *auto_allocs = NULL;
72
ECPGadd_mem(void *ptr, int lineno)
74
struct auto_mem *am = (struct auto_mem *) ECPGalloc(sizeof(struct auto_mem), lineno);
77
am->next = auto_allocs;
82
ECPGfree_auto_mem(void)
86
/* free all memory we have allocated for the user */
87
for (am = auto_allocs; am;)
89
struct auto_mem *act = am;
92
ECPGfree(act->pointer);
100
ECPGclear_auto_mem(void)
104
/* free just our own structure */
105
for (am = auto_allocs; am;)
107
struct auto_mem *act = am;