| Index: third_party/sqlite/src/src/test_malloc.c
|
| diff --git a/third_party/sqlite/src/src/test_malloc.c b/third_party/sqlite/src/src/test_malloc.c
|
| index c63ded7035bd121004972cfe967f1b25e1fb96cc..bd0a3d1ffd2cc95131c43db362eba580533084a0 100644
|
| --- a/third_party/sqlite/src/src/test_malloc.c
|
| +++ b/third_party/sqlite/src/src/test_malloc.c
|
| @@ -234,14 +234,14 @@ static int faultsimInstall(int install){
|
| #ifdef SQLITE_TEST
|
|
|
| /*
|
| -** This function is implemented in test1.c. Returns a pointer to a static
|
| +** This function is implemented in main.c. Returns a pointer to a static
|
| ** buffer containing the symbolic SQLite error code that corresponds to
|
| ** the least-significant 8-bits of the integer passed as an argument.
|
| ** For example:
|
| **
|
| -** sqlite3TestErrorName(1) -> "SQLITE_ERROR"
|
| +** sqlite3ErrName(1) -> "SQLITE_ERROR"
|
| */
|
| -const char *sqlite3TestErrorName(int);
|
| +extern const char *sqlite3ErrName(int);
|
|
|
| /*
|
| ** Transform pointers to text and back again
|
| @@ -696,6 +696,12 @@ static int test_memdebug_pending(
|
| return TCL_OK;
|
| }
|
|
|
| +/*
|
| +** The following global variable keeps track of the number of tests
|
| +** that have run. This variable is only useful when running in the
|
| +** debugger.
|
| +*/
|
| +static int sqlite3_memdebug_title_count = 0;
|
|
|
| /*
|
| ** Usage: sqlite3_memdebug_settitle TITLE
|
| @@ -713,15 +719,16 @@ static int test_memdebug_settitle(
|
| int objc,
|
| Tcl_Obj *CONST objv[]
|
| ){
|
| - const char *zTitle;
|
| + sqlite3_memdebug_title_count++;
|
| if( objc!=2 ){
|
| Tcl_WrongNumArgs(interp, 1, objv, "TITLE");
|
| return TCL_ERROR;
|
| }
|
| - zTitle = Tcl_GetString(objv[1]);
|
| #ifdef SQLITE_MEMDEBUG
|
| {
|
| + const char *zTitle;
|
| extern int sqlite3MemdebugSettitle(const char*);
|
| + zTitle = Tcl_GetString(objv[1]);
|
| sqlite3MemdebugSettitle(zTitle);
|
| }
|
| #endif
|
| @@ -749,7 +756,7 @@ static void test_memdebug_callback(int nByte, int nFrame, void **aFrame){
|
| int isNew;
|
|
|
| int aKey[MALLOC_LOG_KEYINTS];
|
| - int nKey = sizeof(int)*MALLOC_LOG_KEYINTS;
|
| + unsigned int nKey = sizeof(int)*MALLOC_LOG_KEYINTS;
|
|
|
| memset(aKey, 0, nKey);
|
| if( (sizeof(void*)*nFrame)<nKey ){
|
| @@ -880,7 +887,7 @@ static int test_memdebug_log(
|
| **
|
| ** Set the scratch memory buffer using SQLITE_CONFIG_SCRATCH.
|
| ** The buffer is static and is of limited size. N might be
|
| -** adjusted downward as needed to accomodate the requested size.
|
| +** adjusted downward as needed to accommodate the requested size.
|
| ** The revised value of N is returned.
|
| **
|
| ** A negative SIZE causes the buffer pointer to be NULL.
|
| @@ -920,7 +927,7 @@ static int test_config_scratch(
|
| **
|
| ** Set the page-cache memory buffer using SQLITE_CONFIG_PAGECACHE.
|
| ** The buffer is static and is of limited size. N might be
|
| -** adjusted downward as needed to accomodate the requested size.
|
| +** adjusted downward as needed to accommodate the requested size.
|
| ** The revised value of N is returned.
|
| **
|
| ** A negative SIZE causes the buffer pointer to be NULL.
|
| @@ -1033,7 +1040,6 @@ static int test_config_lookaside(
|
| int objc,
|
| Tcl_Obj *CONST objv[]
|
| ){
|
| - int rc;
|
| int sz, cnt;
|
| Tcl_Obj *pRet;
|
| if( objc!=3 ){
|
| @@ -1049,7 +1055,7 @@ static int test_config_lookaside(
|
| Tcl_ListObjAppendElement(
|
| interp, pRet, Tcl_NewIntObj(sqlite3GlobalConfig.nLookaside)
|
| );
|
| - rc = sqlite3_config(SQLITE_CONFIG_LOOKASIDE, sz, cnt);
|
| + sqlite3_config(SQLITE_CONFIG_LOOKASIDE, sz, cnt);
|
| Tcl_SetObjResult(interp, pRet);
|
| return TCL_OK;
|
| }
|
| @@ -1073,7 +1079,7 @@ static int test_db_config_lookaside(
|
| sqlite3 *db;
|
| int bufid;
|
| static char azBuf[2][10000];
|
| - int getDbPointer(Tcl_Interp*, const char*, sqlite3**);
|
| + extern int getDbPointer(Tcl_Interp*, const char*, sqlite3**);
|
| if( objc!=5 ){
|
| Tcl_WrongNumArgs(interp, 1, objv, "BUFID SIZE COUNT");
|
| return TCL_ERROR;
|
| @@ -1095,9 +1101,7 @@ static int test_db_config_lookaside(
|
| }
|
|
|
| /*
|
| -** Usage:
|
| -**
|
| -** sqlite3_config_heap NBYTE NMINALLOC
|
| +** Usage: sqlite3_config_heap NBYTE NMINALLOC
|
| */
|
| static int test_config_heap(
|
| void * clientData,
|
| @@ -1106,7 +1110,6 @@ static int test_config_heap(
|
| Tcl_Obj *CONST objv[]
|
| ){
|
| static char *zBuf; /* Use this memory */
|
| - static int szBuf; /* Bytes allocated for zBuf */
|
| int nByte; /* Size of buffer to pass to sqlite3_config() */
|
| int nMinAlloc; /* Size of minimum allocation */
|
| int rc; /* Return code of sqlite3_config() */
|
| @@ -1124,20 +1127,45 @@ static int test_config_heap(
|
| if( nByte==0 ){
|
| free( zBuf );
|
| zBuf = 0;
|
| - szBuf = 0;
|
| rc = sqlite3_config(SQLITE_CONFIG_HEAP, (void*)0, 0, 0);
|
| }else{
|
| zBuf = realloc(zBuf, nByte);
|
| - szBuf = nByte;
|
| rc = sqlite3_config(SQLITE_CONFIG_HEAP, zBuf, nByte, nMinAlloc);
|
| }
|
|
|
| - Tcl_SetResult(interp, (char *)sqlite3TestErrorName(rc), TCL_VOLATILE);
|
| + Tcl_SetResult(interp, (char *)sqlite3ErrName(rc), TCL_VOLATILE);
|
| return TCL_OK;
|
| }
|
|
|
| /*
|
| -** tclcmd: sqlite3_config_error [DB]
|
| +** Usage: sqlite3_config_heap_size NBYTE
|
| +*/
|
| +static int test_config_heap_size(
|
| + void * clientData,
|
| + Tcl_Interp *interp,
|
| + int objc,
|
| + Tcl_Obj *CONST objv[]
|
| +){
|
| + int nByte; /* Size to pass to sqlite3_config() */
|
| + int rc; /* Return code of sqlite3_config() */
|
| +
|
| + Tcl_Obj * CONST *aArg = &objv[1];
|
| + int nArg = objc-1;
|
| +
|
| + if( nArg!=1 ){
|
| + Tcl_WrongNumArgs(interp, 1, objv, "NBYTE");
|
| + return TCL_ERROR;
|
| + }
|
| + if( Tcl_GetIntFromObj(interp, aArg[0], &nByte) ) return TCL_ERROR;
|
| +
|
| + rc = sqlite3_config(SQLITE_CONFIG_WIN32_HEAPSIZE, nByte);
|
| +
|
| + Tcl_SetResult(interp, (char *)sqlite3ErrName(rc), TCL_VOLATILE);
|
| + return TCL_OK;
|
| +}
|
| +
|
| +/*
|
| +** Usage: sqlite3_config_error [DB]
|
| **
|
| ** Invoke sqlite3_config() or sqlite3_db_config() with invalid
|
| ** opcodes and verify that they return errors.
|
| @@ -1149,7 +1177,7 @@ static int test_config_error(
|
| Tcl_Obj *CONST objv[]
|
| ){
|
| sqlite3 *db;
|
| - int getDbPointer(Tcl_Interp*, const char*, sqlite3**);
|
| + extern int getDbPointer(Tcl_Interp*, const char*, sqlite3**);
|
|
|
| if( objc!=2 && objc!=1 ){
|
| Tcl_WrongNumArgs(interp, 1, objv, "[DB]");
|
| @@ -1175,10 +1203,67 @@ static int test_config_error(
|
| }
|
|
|
| /*
|
| -** Usage:
|
| +** Usage: sqlite3_config_uri BOOLEAN
|
| **
|
| -** sqlite3_dump_memsys3 FILENAME
|
| -** sqlite3_dump_memsys5 FILENAME
|
| +** Enables or disables interpretation of URI parameters by default using
|
| +** SQLITE_CONFIG_URI.
|
| +*/
|
| +static int test_config_uri(
|
| + void * clientData,
|
| + Tcl_Interp *interp,
|
| + int objc,
|
| + Tcl_Obj *CONST objv[]
|
| +){
|
| + int rc;
|
| + int bOpenUri;
|
| +
|
| + if( objc!=2 ){
|
| + Tcl_WrongNumArgs(interp, 1, objv, "BOOL");
|
| + return TCL_ERROR;
|
| + }
|
| + if( Tcl_GetBooleanFromObj(interp, objv[1], &bOpenUri) ){
|
| + return TCL_ERROR;
|
| + }
|
| +
|
| + rc = sqlite3_config(SQLITE_CONFIG_URI, bOpenUri);
|
| + Tcl_SetResult(interp, (char *)sqlite3ErrName(rc), TCL_VOLATILE);
|
| +
|
| + return TCL_OK;
|
| +}
|
| +
|
| +/*
|
| +** Usage: sqlite3_config_cis BOOLEAN
|
| +**
|
| +** Enables or disables the use of the covering-index scan optimization.
|
| +** SQLITE_CONFIG_COVERING_INDEX_SCAN.
|
| +*/
|
| +static int test_config_cis(
|
| + void * clientData,
|
| + Tcl_Interp *interp,
|
| + int objc,
|
| + Tcl_Obj *CONST objv[]
|
| +){
|
| + int rc;
|
| + int bUseCis;
|
| +
|
| + if( objc!=2 ){
|
| + Tcl_WrongNumArgs(interp, 1, objv, "BOOL");
|
| + return TCL_ERROR;
|
| + }
|
| + if( Tcl_GetBooleanFromObj(interp, objv[1], &bUseCis) ){
|
| + return TCL_ERROR;
|
| + }
|
| +
|
| + rc = sqlite3_config(SQLITE_CONFIG_COVERING_INDEX_SCAN, bUseCis);
|
| + Tcl_SetResult(interp, (char *)sqlite3ErrName(rc), TCL_VOLATILE);
|
| +
|
| + return TCL_OK;
|
| +}
|
| +
|
| +
|
| +/*
|
| +** Usage: sqlite3_dump_memsys3 FILENAME
|
| +** sqlite3_dump_memsys5 FILENAME
|
| **
|
| ** Write a summary of unfreed memsys3 allocations to FILENAME.
|
| */
|
| @@ -1193,7 +1278,7 @@ static int test_dump_memsys3(
|
| return TCL_ERROR;
|
| }
|
|
|
| - switch( (int)clientData ){
|
| + switch( SQLITE_PTR_TO_INT(clientData) ){
|
| case 3: {
|
| #ifdef SQLITE_ENABLE_MEMSYS3
|
| extern void sqlite3Memsys3Dump(const char*);
|
| @@ -1285,7 +1370,7 @@ static int test_db_status(
|
| int i, op, resetFlag;
|
| const char *zOpName;
|
| sqlite3 *db;
|
| - int getDbPointer(Tcl_Interp*, const char*, sqlite3**);
|
| + extern int getDbPointer(Tcl_Interp*, const char*, sqlite3**);
|
| static const struct {
|
| const char *zName;
|
| int op;
|
| @@ -1296,11 +1381,15 @@ static int test_db_status(
|
| { "STMT_USED", SQLITE_DBSTATUS_STMT_USED },
|
| { "LOOKASIDE_HIT", SQLITE_DBSTATUS_LOOKASIDE_HIT },
|
| { "LOOKASIDE_MISS_SIZE", SQLITE_DBSTATUS_LOOKASIDE_MISS_SIZE },
|
| - { "LOOKASIDE_MISS_FULL", SQLITE_DBSTATUS_LOOKASIDE_MISS_FULL }
|
| + { "LOOKASIDE_MISS_FULL", SQLITE_DBSTATUS_LOOKASIDE_MISS_FULL },
|
| + { "CACHE_HIT", SQLITE_DBSTATUS_CACHE_HIT },
|
| + { "CACHE_MISS", SQLITE_DBSTATUS_CACHE_MISS },
|
| + { "CACHE_WRITE", SQLITE_DBSTATUS_CACHE_WRITE },
|
| + { "DEFERRED_FKS", SQLITE_DBSTATUS_DEFERRED_FKS }
|
| };
|
| Tcl_Obj *pResult;
|
| if( objc!=4 ){
|
| - Tcl_WrongNumArgs(interp, 1, objv, "PARAMETER RESETFLAG");
|
| + Tcl_WrongNumArgs(interp, 1, objv, "DB PARAMETER RESETFLAG");
|
| return TCL_ERROR;
|
| }
|
| if( getDbPointer(interp, Tcl_GetString(objv[1]), &db) ) return TCL_ERROR;
|
| @@ -1348,7 +1437,7 @@ static int test_install_malloc_faultsim(
|
| return TCL_ERROR;
|
| }
|
| rc = faultsimInstall(isInstall);
|
| - Tcl_SetResult(interp, (char *)sqlite3TestErrorName(rc), TCL_VOLATILE);
|
| + Tcl_SetResult(interp, (char *)sqlite3ErrName(rc), TCL_VOLATILE);
|
| return TCL_OK;
|
| }
|
|
|
| @@ -1366,7 +1455,7 @@ static int test_install_memsys3(
|
| const sqlite3_mem_methods *sqlite3MemGetMemsys3(void);
|
| rc = sqlite3_config(SQLITE_CONFIG_MALLOC, sqlite3MemGetMemsys3());
|
| #endif
|
| - Tcl_SetResult(interp, (char *)sqlite3TestErrorName(rc), TCL_VOLATILE);
|
| + Tcl_SetResult(interp, (char *)sqlite3ErrName(rc), TCL_VOLATILE);
|
| return TCL_OK;
|
| }
|
|
|
| @@ -1419,9 +1508,12 @@ int Sqlitetest_malloc_Init(Tcl_Interp *interp){
|
| { "sqlite3_db_status", test_db_status ,0 },
|
| { "install_malloc_faultsim", test_install_malloc_faultsim ,0 },
|
| { "sqlite3_config_heap", test_config_heap ,0 },
|
| + { "sqlite3_config_heap_size", test_config_heap_size ,0 },
|
| { "sqlite3_config_memstatus", test_config_memstatus ,0 },
|
| { "sqlite3_config_lookaside", test_config_lookaside ,0 },
|
| { "sqlite3_config_error", test_config_error ,0 },
|
| + { "sqlite3_config_uri", test_config_uri ,0 },
|
| + { "sqlite3_config_cis", test_config_cis ,0 },
|
| { "sqlite3_db_config_lookaside",test_db_config_lookaside ,0 },
|
| { "sqlite3_dump_memsys3", test_dump_memsys3 ,3 },
|
| { "sqlite3_dump_memsys5", test_dump_memsys3 ,5 },
|
| @@ -1430,7 +1522,7 @@ int Sqlitetest_malloc_Init(Tcl_Interp *interp){
|
| };
|
| int i;
|
| for(i=0; i<sizeof(aObjCmd)/sizeof(aObjCmd[0]); i++){
|
| - ClientData c = (ClientData)aObjCmd[i].clientData;
|
| + ClientData c = (ClientData)SQLITE_INT_TO_PTR(aObjCmd[i].clientData);
|
| Tcl_CreateObjCommand(interp, aObjCmd[i].zName, aObjCmd[i].xProc, c, 0);
|
| }
|
| return TCL_OK;
|
|
|