Home | History | Annotate | Download | only in src
      1 /*
      2 ** 2008 October 28
      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.
     10 **
     11 *************************************************************************
     12 **
     13 ** This file contains a no-op memory allocation drivers for use when
     14 ** SQLITE_ZERO_MALLOC is defined.  The allocation drivers implemented
     15 ** here always fail.  SQLite will not operate with these drivers.  These
     16 ** are merely placeholders.  Real drivers must be substituted using
     17 ** sqlite3_config() before SQLite will operate.
     18 */
     19 #include "sqliteInt.h"
     20 
     21 /*
     22 ** This version of the memory allocator is the default.  It is
     23 ** used when no other memory allocator is specified using compile-time
     24 ** macros.
     25 */
     26 #ifdef SQLITE_ZERO_MALLOC
     27 
     28 /*
     29 ** No-op versions of all memory allocation routines
     30 */
     31 static void *sqlite3MemMalloc(int nByte){ return 0; }
     32 static void sqlite3MemFree(void *pPrior){ return; }
     33 static void *sqlite3MemRealloc(void *pPrior, int nByte){ return 0; }
     34 static int sqlite3MemSize(void *pPrior){ return 0; }
     35 static int sqlite3MemRoundup(int n){ return n; }
     36 static int sqlite3MemInit(void *NotUsed){ return SQLITE_OK; }
     37 static void sqlite3MemShutdown(void *NotUsed){ return; }
     38 
     39 /*
     40 ** This routine is the only routine in this file with external linkage.
     41 **
     42 ** Populate the low-level memory allocation function pointers in
     43 ** sqlite3GlobalConfig.m with pointers to the routines in this file.
     44 */
     45 void sqlite3MemSetDefault(void){
     46   static const sqlite3_mem_methods defaultMethods = {
     47      sqlite3MemMalloc,
     48      sqlite3MemFree,
     49      sqlite3MemRealloc,
     50      sqlite3MemSize,
     51      sqlite3MemRoundup,
     52      sqlite3MemInit,
     53      sqlite3MemShutdown,
     54      0
     55   };
     56   sqlite3_config(SQLITE_CONFIG_MALLOC, &defaultMethods);
     57 }
     58 
     59 #endif /* SQLITE_ZERO_MALLOC */
     60