void sqlite3ReallocOrFree(void **pp, int n){ void *p = sqlite3Realloc(*pp, n); if( !p ){ sqlite3FreeX(*pp); } *pp = p; }
/* ** The public interface to sqlite3Realloc. Make sure that the memory ** subsystem is initialized prior to invoking sqliteRealloc. */ void *sqlite3_realloc(void *pOld, int n){ #ifndef SQLITE_OMIT_AUTOINIT if( sqlite3_initialize() ) return 0; #endif if( n<0 ) n = 0; /* IMP: R-26507-47431 */ return sqlite3Realloc(pOld, n); }
/* ** Register a statically linked extension that is automatically ** loaded by every new database connection. */ int sqlite3_auto_extension(void *xInit){ int i; int rc = SQLITE_OK; sqlite3OsEnterMutex(); for(i=0; i<nAutoExtension; i++){ if( aAutoExtension[i]==xInit ) break; } if( i==nAutoExtension ){ nAutoExtension++; aAutoExtension = sqlite3Realloc( aAutoExtension, nAutoExtension*sizeof(aAutoExtension[0]) ); if( aAutoExtension==0 ){ nAutoExtension = 0; rc = SQLITE_NOMEM; }else{ aAutoExtension[nAutoExtension-1] = xInit; } } sqlite3OsLeaveMutex(); return rc; }
void *sqlite3_realloc64(void *pOld, sqlite3_uint64 n){ #ifndef SQLITE_OMIT_AUTOINIT if( sqlite3_initialize() ) return 0; #endif return sqlite3Realloc(pOld, n); }