From: dan Date: Sat, 31 Mar 2012 15:08:56 +0000 (+0000) Subject: Modify selectColumnsFromExprList() to avoid ever incorrectly returning SQLITE_NOMEM. X-Git-Tag: version-3.7.12~61 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=8c2e0f02ba3612e4838eed00ab7ab30eec321acc;p=thirdparty%2Fsqlite.git Modify selectColumnsFromExprList() to avoid ever incorrectly returning SQLITE_NOMEM. FossilOrigin-Name: e7cb6b73ac079d0751b3f9429d0f6a35ca8ec853 --- diff --git a/manifest b/manifest index 94e4cca145..8360172a45 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Change\sthe\sICU\stokenizer\sso\sthat\sit\sdoes\snot\sattempt\sto\scall\sstrlen(NULL). -D 2012-03-31T11:58:23.752 +C Modify\sselectColumnsFromExprList()\sto\savoid\sever\sincorrectly\sreturning\sSQLITE_NOMEM. +D 2012-03-31T15:08:56.437 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f F Makefile.in 2f37e468503dbe79d35c9f6dffcf3fae1ae9ec20 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23 @@ -181,7 +181,7 @@ F src/printf.c 7ffb4ebb8b341f67e049695ba031da717b3d2699 F src/random.c cd4a67b3953b88019f8cd4ccd81394a8ddfaba50 F src/resolve.c 3d3e80a98f203ac6b9329e9621e29eda85ddfd40 F src/rowset.c 69afa95a97c524ba6faf3805e717b5b7ae85a697 -F src/select.c f6f141cb1ea13f1e6564d3e162700e4937baa2a1 +F src/select.c 5e0e481c7d215d3c7ca8ccae1e688aa30163c6c1 F src/shell.c abf18d6ee54f2631860a98fdd7ab1327f470db67 F src/sqlite.h.in 11a883919b0baf4ffaa7550cfeef99be613ec2bf F src/sqlite3ext.h 6904f4aadf976f95241311fbffb00823075d9477 @@ -999,7 +999,7 @@ F tool/tostr.awk e75472c2f98dd76e06b8c9c1367f4ab07e122d06 F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f F tool/warnings-clang.sh 9f406d66e750e8ac031c63a9ef3248aaa347ef2a F tool/warnings.sh fbc018d67fd7395f440c28f33ef0f94420226381 -P c9342ca58105499a5eb61c3e6d016559b6072c95 -R e0716dc6380f52d6136a7e11cf5bb377 +P 04298f1ac42c40cb2a48092b415acf96a08954b7 +R 0f878dd95f65af523296a3016003b93f U dan -Z be3c953a1198ae2a4c78c4ed2dd05529 +Z 97900e673e834268c29dd651e4b74076 diff --git a/manifest.uuid b/manifest.uuid index de3255bc98..bd4af99639 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -04298f1ac42c40cb2a48092b415acf96a08954b7 \ No newline at end of file +e7cb6b73ac079d0751b3f9429d0f6a35ca8ec853 \ No newline at end of file diff --git a/src/select.c b/src/select.c index c225013672..b44220ebcf 100644 --- a/src/select.c +++ b/src/select.c @@ -1258,9 +1258,17 @@ static int selectColumnsFromExprList( char *zName; /* Column name */ int nName; /* Size of name in zName[] */ - *pnCol = nCol = pEList ? pEList->nExpr : 0; - aCol = *paCol = sqlite3DbMallocZero(db, sizeof(aCol[0])*nCol); - if( aCol==0 ) return SQLITE_NOMEM; + if( pEList ){ + nCol = pEList->nExpr; + aCol = sqlite3DbMallocZero(db, sizeof(aCol[0])*nCol); + testcase( aCol==0 ); + }else{ + nCol = 0; + aCol = 0; + } + *pnCol = nCol; + *paCol = aCol; + for(i=0, pCol=aCol; i