-C Add\ssqlite_temp_directory\sto\sthe\swindows\sdriver.\s(CVS\s1905)
-D 2004-08-28T01:12:57
+C Add\snew\sdefenses\sagainst\smisuse\sof\sthe\sC\sAPI.\s\sTicket\s#870.\s(CVS\s1906)
+D 2004-08-28T14:49:47
F Makefile.in 4a5e570a9e2d35b09c31b3cf01b78cea764ade4b
F Makefile.linux-gcc a9e5a0d309fa7c38e7c14d3ecf7690879d3a5457
F README f1de682fbbd94899d50aca13d387d1b3fd3be2dd
F src/hash.h 1b0c445e1c89ff2aaad9b4605ba61375af001e84
F src/insert.c fc1ce65a0fe68f226143de9b43c3582164a92aff
F src/legacy.c 2f3617c61bcdcd1d776154a9cfebf99facda8ad8
-F src/main.c 581ccf00909842d05c42ce02bb19b92859f447db
+F src/main.c c00e3f9e8c4fa9bc0fdad43ce366958db73ac9c6
F src/md5.c 7ae1c39044b95de2f62e066f47bb1deb880a1070
F src/os.h d1780e0db95cad01f213d48da22ab490eb4fd345
F src/os_common.h cd7eb025fdab7dc91e0e97bf6310f1648205857f
F src/vdbe.c ea662188cc489934a567d1eaa3fb6754d5b92b7d
F src/vdbe.h e081c72cd0f7c19d49b1927460aeefcf0fbc85ac
F src/vdbeInt.h 16322cbfccf0b05631fcf0df68b115c46584d6c9
-F src/vdbeapi.c e20e646a0ec4e74934bfcb82bd0fbb3c3c4a21f7
+F src/vdbeapi.c 854732720c2cfc6ff76b28eef6253ac84a5408bc
F src/vdbeaux.c 022c484dba235d2dcbb1faca0f1943702f4232ed
F src/vdbemem.c 68fefaf83adb48fe44135da01502c9327f6172b0
F src/where.c a84eee276cd072158224da6b5f30733df2d56027
F www/vdbe.tcl 59288db1ac5c0616296b26dce071c36cb611dfe9
F www/version3.tcl 092a01f5ef430d2c4acc0ae558d74c4bb89638a0
F www/whentouse.tcl a8335bce47cc2fddb07f19052cb0cb4d9129a8e4
-P b3b9e58103dd6c65c55caf9a25bc1c257b37df88
-R af741a99488fdab1ea07d8dfec296d71
+P f5b0e5b0b2f17d179c23c7e4542dbbb452096056
+R 19adc0034f3d181b6cae6f1ebdba626d
U drh
-Z f2d1ace11f29f4f151b3075cb095a708
+Z 8b14a526a7800c9ee03abeba359d39e9
-f5b0e5b0b2f17d179c23c7e4542dbbb452096056
\ No newline at end of file
+6ef1f662d71c75bdb7f61b2fff03f5b1b41e5586
\ No newline at end of file
** other files are for internal use by SQLite and should not be
** accessed by users of the library.
**
-** $Id: main.c,v 1.253 2004/08/21 17:54:45 drh Exp $
+** $Id: main.c,v 1.254 2004/08/28 14:49:47 drh Exp $
*/
#include "sqliteInt.h"
#include "os.h"
** sqlite3_errcode(), sqlite3_errmsg() and sqlite3_errmsg16().
*/
int sqlite3_finalize(sqlite3_stmt *pStmt){
- return pStmt ? sqlite3VdbeFinalize((Vdbe*)pStmt) : SQLITE_OK;
+ int rc;
+ if( pStmt==0 ){
+ rc = SQLITE_OK;
+ }else{
+ rc = sqlite3VdbeFinalize((Vdbe*)pStmt);
+ }
+ return rc;
}
/*
** sqlite3_errcode(), sqlite3_errmsg() and sqlite3_errmsg16().
*/
int sqlite3_reset(sqlite3_stmt *pStmt){
- int rc = sqlite3VdbeReset((Vdbe*)pStmt);
- sqlite3VdbeMakeReady((Vdbe*)pStmt, -1, 0, 0, 0);
+ int rc;
+ if( pStmt==0 ){
+ rc = SQLITE_OK;
+ }else{
+ rc = sqlite3VdbeReset((Vdbe*)pStmt);
+ sqlite3VdbeMakeReady((Vdbe*)pStmt, -1, 0, 0, 0);
+ }
return rc;
}
sqlite *db;
int rc;
- if( p->magic!=VDBE_MAGIC_RUN ){
+ if( p==0 || p->magic!=VDBE_MAGIC_RUN ){
return SQLITE_MISUSE;
}
if( p->aborted ){
*/
int sqlite3_column_count(sqlite3_stmt *pStmt){
Vdbe *pVm = (Vdbe *)pStmt;
- return pVm->nResColumn;
+ return pVm ? pVm->nResColumn : 0;
}
/*
*/
int sqlite3_data_count(sqlite3_stmt *pStmt){
Vdbe *pVm = (Vdbe *)pStmt;
- if( !pVm->resOnStack ) return 0;
+ if( pVm==0 || !pVm->resOnStack ) return 0;
return pVm->nResColumn;
}
*/
static int vdbeUnbind(Vdbe *p, int i){
Mem *pVar;
- if( p->magic!=VDBE_MAGIC_RUN || p->pc>=0 ){
+ if( p==0 || p->magic!=VDBE_MAGIC_RUN || p->pc>=0 ){
sqlite3Error(p->db, SQLITE_MISUSE, 0);
return SQLITE_MISUSE;
}