diff options
author | drh <drh@noemail.net> | 2018-08-13 13:43:11 +0000 |
---|---|---|
committer | drh <drh@noemail.net> | 2018-08-13 13:43:11 +0000 |
commit | 5fc22cdfde5965b6d78d3fc16d898a35daeadf76 (patch) | |
tree | cb85fc4f118f82cfd257d3f905eaed3423b96161 /src | |
parent | 3a9a76b70a0ee2dce226b4c00b64cd238c6be4a9 (diff) | |
download | sqlite-5fc22cdfde5965b6d78d3fc16d898a35daeadf76.tar.gz sqlite-5fc22cdfde5965b6d78d3fc16d898a35daeadf76.zip |
Fix issues with ALTER TABLE RENAME COLUMN associated with OOM errors.
FossilOrigin-Name: 0b28dd5c2e4908d5e49eaedd359492e46de8af3bf84120f4683b3ea906882fbf
Diffstat (limited to 'src')
-rw-r--r-- | src/alter.c | 5 | ||||
-rw-r--r-- | src/parse.y | 2 |
2 files changed, 4 insertions, 3 deletions
diff --git a/src/alter.c b/src/alter.c index 6b0400598..98400c1ad 100644 --- a/src/alter.c +++ b/src/alter.c @@ -970,6 +970,7 @@ static void renameColumnFunc( sParse.nQueryLoop = 1; rc = sqlite3RunParser(&sParse, zSql, &zErr); assert( sParse.pNewTable==0 || sParse.pNewIndex==0 ); + if( db->mallocFailed ) rc = SQLITE_NOMEM; if( rc==SQLITE_OK && sParse.pNewTable==0 && sParse.pNewIndex==0 ){ rc = SQLITE_CORRUPT_BKPT; } @@ -990,8 +991,7 @@ static void renameColumnFunc( sqlite3_result_error_code(context, rc); } sqlite3DbFree(db, zErr); - sqlite3_free(zQuot); - return; + goto renameColumnFunc_done; } if( bQuote ){ @@ -1094,6 +1094,7 @@ static void renameColumnFunc( sqlite3DbFree(db, zOut); } +renameColumnFunc_done: if( sParse.pVdbe ){ sqlite3VdbeFinalize(sParse.pVdbe); } diff --git a/src/parse.y b/src/parse.y index 3e4b60623..47e73feb8 100644 --- a/src/parse.y +++ b/src/parse.y @@ -1311,7 +1311,7 @@ uniqueflag(A) ::= . {A = OE_None;} pIdToken->n, pIdToken->z); } sqlite3ExprListSetName(pParse, p, pIdToken, 1); - if( IN_RENAME_COLUMN ){ + if( IN_RENAME_COLUMN && p ){ sqlite3RenameToken(pParse, (void*)(p->a[p->nExpr-1].zName), pIdToken); } return p; |