mirror of
https://github.com/sqlite/sqlite.git
synced 2025-11-02 05:54:29 +03:00
Simplifications to error message processing. Fix a possible problem in error
message formatting when vacuuming a database with a corrupt schema. FossilOrigin-Name: 56ef98a04765c34c1c2f3ed7a6f03a732f3b886e
This commit is contained in:
@@ -38,6 +38,17 @@ Vdbe *sqlite3VdbeCreate(Parse *pParse){
|
||||
return p;
|
||||
}
|
||||
|
||||
/*
|
||||
** Change the error string stored in Vdbe.zErrMsg
|
||||
*/
|
||||
void sqlite3VdbeError(Vdbe *p, const char *zFormat, ...){
|
||||
va_list ap;
|
||||
sqlite3DbFree(p->db, p->zErrMsg);
|
||||
va_start(ap, zFormat);
|
||||
p->zErrMsg = sqlite3VMPrintf(p->db, zFormat, ap);
|
||||
va_end(ap);
|
||||
}
|
||||
|
||||
/*
|
||||
** Remember the SQL string for a prepared statement.
|
||||
*/
|
||||
@@ -1394,7 +1405,7 @@ int sqlite3VdbeList(
|
||||
}else if( db->u1.isInterrupted ){
|
||||
p->rc = SQLITE_INTERRUPT;
|
||||
rc = SQLITE_ERROR;
|
||||
sqlite3SetString(&p->zErrMsg, db, "%s", sqlite3ErrStr(p->rc));
|
||||
sqlite3VdbeError(p, sqlite3ErrStr(p->rc));
|
||||
}else{
|
||||
char *zP4;
|
||||
Op *pOp;
|
||||
@@ -2297,7 +2308,7 @@ int sqlite3VdbeCheckFk(Vdbe *p, int deferred){
|
||||
){
|
||||
p->rc = SQLITE_CONSTRAINT_FOREIGNKEY;
|
||||
p->errorAction = OE_Abort;
|
||||
sqlite3SetString(&p->zErrMsg, db, "FOREIGN KEY constraint failed");
|
||||
sqlite3VdbeError(p, "FOREIGN KEY constraint failed");
|
||||
return SQLITE_ERROR;
|
||||
}
|
||||
return SQLITE_OK;
|
||||
|
||||
Reference in New Issue
Block a user