1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-11-14 00:22:38 +03:00

Fix some memory leaks that occur after a malloc failure. (CVS 2421)

FossilOrigin-Name: bcb5d72ef146b1019c72220701d385c7b0b5d0bd
This commit is contained in:
drh
2005-03-28 03:39:55 +00:00
parent f0b5792bdc
commit dd5b2fa5f2
5 changed files with 27 additions and 20 deletions

View File

@@ -12,7 +12,7 @@
** This file contains C code routines that are called by the parser
** to handle SELECT statements in SQLite.
**
** $Id: select.c,v 1.242 2005/03/21 03:53:38 danielk1977 Exp $
** $Id: select.c,v 1.243 2005/03/28 03:39:56 drh Exp $
*/
#include "sqliteInt.h"
@@ -890,7 +890,11 @@ Table *sqlite3ResultSetOfSelect(Parse *pParse, char *zTabName, Select *pSelect){
zName = sqlite3MPrintf("column%d", i+1);
}
sqlite3Dequote(zName);
if( sqlite3_malloc_failed ) return 0;
if( sqlite3_malloc_failed ){
sqliteFree(zName);
sqlite3DeleteTable(0, pTab);
return 0;
}
/* Make sure the column name is unique. If the name is not unique,
** append a integer to the name so that it becomes unique.
@@ -900,6 +904,7 @@ Table *sqlite3ResultSetOfSelect(Parse *pParse, char *zTabName, Select *pSelect){
if( sqlite3StrICmp(aCol[j].zName, zName)==0 ){
zName = sqlite3MPrintf("%s:%d", zBasename, ++cnt);
j = -1;
if( zName==0 ) break;
}
}
if( zBasename!=zName ){