Update test file walprotocol.test to account for the changes in the wal
[sqlite.git] / ext / lsm1 / lsm_mem.c
blob13dd9fe312c8f5882c71f250847a63b59b9291fb
1 /*
2 ** 2011-08-18
3 **
4 ** The author disclaims copyright to this source code. In place of
5 ** a legal notice, here is a blessing:
6 **
7 ** May you do good and not evil.
8 ** May you find forgiveness for yourself and forgive others.
9 ** May you share freely, never taking more than you give.
11 *************************************************************************
13 ** Helper routines for memory allocation.
15 #include "lsmInt.h"
18 ** The following routines are called internally by LSM sub-routines. In
19 ** this case a valid environment pointer must be supplied.
21 void *lsmMalloc(lsm_env *pEnv, size_t N){
22 assert( pEnv );
23 return pEnv->xMalloc(pEnv, N);
25 void lsmFree(lsm_env *pEnv, void *p){
26 assert( pEnv );
27 pEnv->xFree(pEnv, p);
29 void *lsmRealloc(lsm_env *pEnv, void *p, size_t N){
30 assert( pEnv );
31 return pEnv->xRealloc(pEnv, p, N);
35 ** Core memory allocation routines for LSM.
37 void *lsm_malloc(lsm_env *pEnv, size_t N){
38 return lsmMalloc(pEnv ? pEnv : lsm_default_env(), N);
40 void lsm_free(lsm_env *pEnv, void *p){
41 lsmFree(pEnv ? pEnv : lsm_default_env(), p);
43 void *lsm_realloc(lsm_env *pEnv, void *p, size_t N){
44 return lsmRealloc(pEnv ? pEnv : lsm_default_env(), p, N);
47 void *lsmMallocZero(lsm_env *pEnv, size_t N){
48 void *pRet;
49 assert( pEnv );
50 pRet = lsmMalloc(pEnv, N);
51 if( pRet ) memset(pRet, 0, N);
52 return pRet;
55 void *lsmMallocRc(lsm_env *pEnv, size_t N, int *pRc){
56 void *pRet = 0;
57 if( *pRc==LSM_OK ){
58 pRet = lsmMalloc(pEnv, N);
59 if( pRet==0 ){
60 *pRc = LSM_NOMEM_BKPT;
63 return pRet;
66 void *lsmMallocZeroRc(lsm_env *pEnv, size_t N, int *pRc){
67 void *pRet = 0;
68 if( *pRc==LSM_OK ){
69 pRet = lsmMallocZero(pEnv, N);
70 if( pRet==0 ){
71 *pRc = LSM_NOMEM_BKPT;
74 return pRet;
77 void *lsmReallocOrFree(lsm_env *pEnv, void *p, size_t N){
78 void *pNew;
79 pNew = lsm_realloc(pEnv, p, N);
80 if( !pNew ) lsm_free(pEnv, p);
81 return pNew;
84 void *lsmReallocOrFreeRc(lsm_env *pEnv, void *p, size_t N, int *pRc){
85 void *pRet = 0;
86 if( *pRc ){
87 lsmFree(pEnv, p);
88 }else{
89 pRet = lsmReallocOrFree(pEnv, p, N);
90 if( !pRet ) *pRc = LSM_NOMEM_BKPT;
92 return pRet;
95 char *lsmMallocStrdup(lsm_env *pEnv, const char *zIn){
96 int nByte;
97 char *zRet;
98 nByte = strlen(zIn);
99 zRet = lsmMalloc(pEnv, nByte+1);
100 if( zRet ){
101 memcpy(zRet, zIn, nByte+1);
103 return zRet;