| Index: third_party/sqlite/src/src/test_thread.c | 
| diff --git a/third_party/sqlite/src/src/test_thread.c b/third_party/sqlite/src/src/test_thread.c | 
| index ef191bc2d7cd07e06b5adb6235aecdc19947c74e..2f9363b7501e511981fe32831ff2e8fd2f30c493 100644 | 
| --- a/third_party/sqlite/src/src/test_thread.c | 
| +++ b/third_party/sqlite/src/src/test_thread.c | 
| @@ -60,12 +60,14 @@ static Tcl_ObjCmdProc blocking_prepare_v2_proc; | 
| int Sqlitetest1_Init(Tcl_Interp *); | 
| int Sqlite3_Init(Tcl_Interp *); | 
|  | 
| +/* Functions from main.c */ | 
| +extern const char *sqlite3ErrName(int); | 
| + | 
| /* Functions from test1.c */ | 
| -void *sqlite3TestTextToPtr(const char *); | 
| -const char *sqlite3TestErrorName(int); | 
| -int getDbPointer(Tcl_Interp *, const char *, sqlite3 **); | 
| -int sqlite3TestMakePointerStr(Tcl_Interp *, char *, void *); | 
| -int sqlite3TestErrCode(Tcl_Interp *, sqlite3 *, int); | 
| +extern void *sqlite3TestTextToPtr(const char *); | 
| +extern int getDbPointer(Tcl_Interp *, const char *, sqlite3 **); | 
| +extern int sqlite3TestMakePointerStr(Tcl_Interp *, char *, void *); | 
| +extern int sqlite3TestErrCode(Tcl_Interp *, sqlite3 *, int); | 
|  | 
| /* | 
| ** Handler for events of type EvalEvent. | 
| @@ -273,7 +275,6 @@ static int sqlthread_open( | 
|  | 
| const char *zFilename; | 
| sqlite3 *db; | 
| -  int rc; | 
| char zBuf[100]; | 
| extern void Md5_Register(sqlite3*); | 
|  | 
| @@ -281,7 +282,23 @@ static int sqlthread_open( | 
| UNUSED_PARAMETER(objc); | 
|  | 
| zFilename = Tcl_GetString(objv[2]); | 
| -  rc = sqlite3_open(zFilename, &db); | 
| +  sqlite3_open(zFilename, &db); | 
| +#ifdef SQLITE_HAS_CODEC | 
| +  if( db && objc>=4 ){ | 
| +    const char *zKey; | 
| +    int nKey; | 
| +    int rc; | 
| +    zKey = Tcl_GetStringFromObj(objv[3], &nKey); | 
| +    rc = sqlite3_key(db, zKey, nKey); | 
| +    if( rc!=SQLITE_OK ){ | 
| +      char *zErrMsg = sqlite3_mprintf("error %d: %s", rc, sqlite3_errmsg(db)); | 
| +      sqlite3_close(db); | 
| +      Tcl_AppendResult(interp, zErrMsg, (char*)0); | 
| +      sqlite3_free(zErrMsg); | 
| +      return TCL_ERROR; | 
| +    } | 
| +  } | 
| +#endif | 
| Md5_Register(db); | 
| sqlite3_busy_handler(db, xBusy, 0); | 
|  | 
| @@ -305,7 +322,7 @@ static int sqlthread_id( | 
| Tcl_Obj *CONST objv[] | 
| ){ | 
| Tcl_ThreadId id = Tcl_GetCurrentThread(); | 
| -  Tcl_SetObjResult(interp, Tcl_NewIntObj((int)id)); | 
| +  Tcl_SetObjResult(interp, Tcl_NewIntObj(SQLITE_PTR_TO_INT(id))); | 
| UNUSED_PARAMETER(clientData); | 
| UNUSED_PARAMETER(objc); | 
| UNUSED_PARAMETER(objv); | 
| @@ -349,7 +366,7 @@ static int sqlthread_proc( | 
| if( rc!=TCL_OK ) return rc; | 
| pSub = &aSub[iIndex]; | 
|  | 
| -  if( objc!=(pSub->nArg+2) ){ | 
| +  if( objc<(pSub->nArg+2) ){ | 
| Tcl_WrongNumArgs(interp, 2, objv, pSub->zUsage); | 
| return TCL_ERROR; | 
| } | 
| @@ -404,9 +421,9 @@ static int clock_seconds_proc( | 
| */ | 
| typedef struct UnlockNotification UnlockNotification; | 
| struct UnlockNotification { | 
| -  int fired;                           /* True after unlock event has occured */ | 
| -  pthread_cond_t cond;                 /* Condition variable to wait on */ | 
| -  pthread_mutex_t mutex;               /* Mutex to protect structure */ | 
| +  int fired;                         /* True after unlock event has occurred */ | 
| +  pthread_cond_t cond;               /* Condition variable to wait on */ | 
| +  pthread_mutex_t mutex;             /* Mutex to protect structure */ | 
| }; | 
|  | 
| /* | 
| @@ -544,7 +561,7 @@ static int blocking_step_proc( | 
| pStmt = (sqlite3_stmt*)sqlite3TestTextToPtr(Tcl_GetString(objv[1])); | 
| rc = sqlite3_blocking_step(pStmt); | 
|  | 
| -  Tcl_SetResult(interp, (char *)sqlite3TestErrorName(rc), 0); | 
| +  Tcl_SetResult(interp, (char *)sqlite3ErrName(rc), 0); | 
| return TCL_OK; | 
| } | 
|  | 
| @@ -591,7 +608,7 @@ static int blocking_prepare_v2_proc( | 
| } | 
| if( rc!=SQLITE_OK ){ | 
| assert( pStmt==0 ); | 
| -    sprintf(zBuf, "%s ", (char *)sqlite3TestErrorName(rc)); | 
| +    sprintf(zBuf, "%s ", (char *)sqlite3ErrName(rc)); | 
| Tcl_AppendResult(interp, zBuf, sqlite3_errmsg(db), 0); | 
| return TCL_ERROR; | 
| } | 
|  |