mirror of
https://github.com/sqlite/sqlite.git
synced 2025-08-08 14:02:16 +03:00
If a virtual table xSync() returns an error message, copy it into a buffer allocated by sqlite3DbMalloc() before transfering it to Vdbe.zErrMsg.
FossilOrigin-Name: 854ba3049005adf033e07e6740a36e63f2a56758
This commit is contained in:
@@ -810,10 +810,9 @@ static void callFinaliser(sqlite3 *db, int offset){
|
||||
** array. Return the error code for the first error that occurs, or
|
||||
** SQLITE_OK if all xSync operations are successful.
|
||||
**
|
||||
** Set *pzErrmsg to point to a buffer that should be released using
|
||||
** sqlite3DbFree() containing an error message, if one is available.
|
||||
** If an error message is available, leave it in p->zErrMsg.
|
||||
*/
|
||||
int sqlite3VtabSync(sqlite3 *db, char **pzErrmsg){
|
||||
int sqlite3VtabSync(sqlite3 *db, Vdbe *p){
|
||||
int i;
|
||||
int rc = SQLITE_OK;
|
||||
VTable **aVTrans = db->aVTrans;
|
||||
@@ -824,9 +823,7 @@ int sqlite3VtabSync(sqlite3 *db, char **pzErrmsg){
|
||||
sqlite3_vtab *pVtab = aVTrans[i]->pVtab;
|
||||
if( pVtab && (x = pVtab->pModule->xSync)!=0 ){
|
||||
rc = x(pVtab);
|
||||
sqlite3DbFree(db, *pzErrmsg);
|
||||
*pzErrmsg = pVtab->zErrMsg;
|
||||
pVtab->zErrMsg = 0;
|
||||
sqlite3VtabImportErrmsg(p, pVtab);
|
||||
}
|
||||
}
|
||||
db->aVTrans = aVTrans;
|
||||
|
Reference in New Issue
Block a user