static int vdbeSafetyNotNull(Vdbe *p){ if( p==0 ){ sqlite3_log(SQLITE_MISUSE, "API called with NULL prepared statement"); return 1; }else{ return vdbeSafety(p); } }
/* ** The following routine destroys a virtual machine that is created by ** the sqlite3_compile() routine. The integer returned is an SQLITE_ ** success/failure code that describes the result of executing the virtual ** machine. ** ** This routine sets the error code and string returned by ** sqlite3_errcode(), sqlite3_errmsg() and sqlite3_errmsg16(). */ int sqlite3_finalize(sqlite3_stmt *pStmt){ int rc; if( pStmt==0 ){ /* IMPLEMENTATION-OF: R-57228-12904 Invoking sqlite3_finalize() on a NULL ** pointer is a harmless no-op. */ rc = SQLITE_OK; }else{ Vdbe *v = (Vdbe*)pStmt; sqlite3 *db = v->db; if( vdbeSafety(v) ) return SQLITE_MISUSE_BKPT; sqlite3_mutex_enter(db->mutex); rc = sqlite3VdbeFinalize(v); rc = sqlite3ApiExit(db, rc); sqlite3LeaveMutexAndCloseZombie(db); } return rc; }
/* ** The following routine destroys a virtual machine that is created by ** the sqlite3_compile() routine. The integer returned is an SQLITE_ ** success/failure code that describes the result of executing the virtual ** machine. ** ** This routine sets the error code and string returned by ** sqlite3_errcode(), sqlite3_errmsg() and sqlite3_errmsg16(). */ int sqlite3_finalize(sqlite3_stmt *pStmt){ int rc; if( pStmt==0 ){ rc = SQLITE_OK; }else{ Vdbe *v = (Vdbe*)pStmt; sqlite3 *db = v->db; #if SQLITE_THREADSAFE sqlite3_mutex *mutex; #endif if( vdbeSafety(v) ) return SQLITE_MISUSE_BKPT; #if SQLITE_THREADSAFE mutex = v->db->mutex; #endif sqlite3_mutex_enter(mutex); rc = sqlite3VdbeFinalize(v); rc = sqlite3ApiExit(db, rc); sqlite3_mutex_leave(mutex); } return rc; }
/* ** The following routine destroys a virtual machine that is created by ** the sqlite4_compile() routine. The integer returned is an SQLITE4_ ** success/failure code that describes the result of executing the virtual ** machine. ** ** This routine sets the error code and string returned by ** sqlite4_errcode(), sqlite4_errmsg() and sqlite4_errmsg16(). */ int sqlite4_finalize(sqlite4_stmt *pStmt) { int rc; if( pStmt==0 ) { /* IMPLEMENTATION-OF: R-57228-12904 Invoking sqlite4_finalize() on a NULL ** pointer is a harmless no-op. */ rc = SQLITE4_OK; } else { Vdbe *v = (Vdbe*)pStmt; sqlite4 *db = v->db; #if SQLITE4_THREADSAFE sqlite4_mutex *mutex; #endif if( vdbeSafety(v) ) return SQLITE4_MISUSE_BKPT; #if SQLITE4_THREADSAFE mutex = v->db->mutex; #endif sqlite4_mutex_enter(mutex); rc = sqlite4VdbeFinalize(v); rc = sqlite4ApiExit(db, rc); sqlite4_mutex_leave(mutex); } return rc; }