From d81bd4e209374d24ef7534a3e9e6a3fa4540d8c6 Mon Sep 17 00:00:00 2001 From: drh Date: Mon, 5 Sep 2005 20:06:49 +0000 Subject: [PATCH] Fix bugs introduced by checkin (2656) and do some modest code enhancements. (CVS 2657) FossilOrigin-Name: 7b56763a8b514834198d2392639d6d726b17d901 --- manifest | 18 +++++++++--------- manifest.uuid | 2 +- src/expr.c | 8 ++++---- src/os_win.c | 4 ++-- src/select.c | 5 ++--- src/vdbeaux.c | 6 ++++-- 6 files changed, 22 insertions(+), 21 deletions(-) diff --git a/manifest b/manifest index 21bb975660..5b7a1b13a4 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Use\sthe\sunicode\sAPI\sto\swin32\swhere\savailable.\r\nTickets\s#1407,\s#1396,\s#1331,\s#1243,\s#1206\s(CVS\s2656) -D 2005-09-05T19:08:29 +C Fix\sbugs\sintroduced\sby\scheckin\s(2656)\sand\sdo\ssome\smodest\scode\senhancements.\s(CVS\s2657) +D 2005-09-05T20:06:49 F Makefile.in 12784cdce5ffc8dfb707300c34e4f1eb3b8a14f1 F Makefile.linux-gcc 06be33b2a9ad4f005a5f42b22c4a19dab3cbb5c7 F README 9c4e2d6706bdcc3efdd773ce752a8cdab4f90028 @@ -40,7 +40,7 @@ F src/complete.c 4de937dfdd4c79a501772ab2035b26082f337a79 F src/date.c 7444b0900a28da77e57e3337a636873cff0ae940 F src/delete.c be1fc25c9e109cd8cbab42a43ee696263da7c04b F src/experimental.c 50c1e3b34f752f4ac10c36f287db095c2b61766d -F src/expr.c e9d0401bed1fa61cce356c2da4b53dae769c4fc3 +F src/expr.c 8a72157fa6842e84819a8c80521be02ec471180c F src/func.c 9da04a6241309a612cf610715944c6a2aaf0f297 F src/hash.c 2b1b13f7400e179631c83a1be0c664608c8f021f F src/hash.h 1b0c445e1c89ff2aaad9b4605ba61375af001e84 @@ -54,7 +54,7 @@ F src/os_test.c 91e5f22dd89491e5e1554820e715805f43fa4ece F src/os_test.h 903c93554c23d88f34f667f1979e4a1cee792af3 F src/os_unix.c b4c4592589113db088662ef7570967ec36022b5d F src/os_unix.h 5768d56d28240d3fe4537fac08cc85e4fb52279e -F src/os_win.c 8b80f418aefd2ceabe3580f680f5dcc244cf2344 +F src/os_win.c 4aad6cd49a2a546f945491a9e6a0b7d061cf47c5 F src/os_win.h 41a946bea10f61c158ce8645e7646b29d44f122b F src/pager.c cd9896287a8fd33cc267bd0c2b69c421a4808169 F src/pager.h 17b13225abd93c1e9f470060f40a21b9edb5a164 @@ -63,7 +63,7 @@ F src/pragma.c 69413fbdc0c6aaa493a776ea52c1b3e6cf35dfb2 F src/prepare.c 86f0d8e744b8d956eff6bc40e29049efee017610 F src/printf.c d2678b06cfa07be9b14c330a42310f62340e34ce F src/random.c 90adff4e73a3b249eb4f1fc2a6ff9cf78c7233a4 -F src/select.c aabc227c8806fb942dff17965a0e63fe2a9ced67 +F src/select.c 79bd7f97345ee4291e7f4d469307b185eb2cba8f F src/shell.c b21daba017b8feef2fdc65ecde57f70209494217 F src/sqlite.h.in d6561d51025d08de4f455607f3f9f9aa76e855d5 F src/sqliteInt.h 845ff6f8019f80baafb1bdbb8ef80fcd04d9d0f9 @@ -84,7 +84,7 @@ F src/vdbe.c efde23f8829b5902cfbc8cca3f3fab51a7e9c99a F src/vdbe.h 3b29a9af6c7a64ed692bef1fc5f61338f40d2f67 F src/vdbeInt.h 52811a5182c6f98a10d34a1d1d0188fe3582ae03 F src/vdbeapi.c f0d36ff0f06bb5315efac5645b62e99db2c175b8 -F src/vdbeaux.c afb689d2d5c413ec3448f8f697d07dcd35bd8766 +F src/vdbeaux.c b23bb870ab88fb91a2dd15273922d93314d8a7a3 F src/vdbefifo.c 9efb94c8c3f4c979ebd0028219483f88e57584f5 F src/vdbemem.c 4732fd4d1a75dc38549493d7f9a81d02bf7c59b5 F src/where.c 92ab208abe6bec15e81616b8c1a619be23ece506 @@ -306,7 +306,7 @@ F www/tclsqlite.tcl 3df553505b6efcad08f91e9b975deb2e6c9bb955 F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0 F www/version3.tcl a99cf5f6d8bd4d5537584a2b342f0fb9fa601d8b F www/whentouse.tcl 97e2b5cd296f7d8057e11f44427dea8a4c2db513 -P efbb4bc83cd86b6a26d58c5818c58c2e3edaab18 -R d11951b0db345c53b16225d15ddfa80a +P 3ec58c673ae4cf0695ea0c287cc9bcbdcdb1a200 +R c648b12a5837f4af3bcb70379debe21a U drh -Z ce91eee65efcee02daeb83c44469f09e +Z 6fef8f1ff4c303f7c6fae65439249cbb diff --git a/manifest.uuid b/manifest.uuid index 6799ed3610..042cf7e2d7 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -3ec58c673ae4cf0695ea0c287cc9bcbdcdb1a200 \ No newline at end of file +7b56763a8b514834198d2392639d6d726b17d901 \ No newline at end of file diff --git a/src/expr.c b/src/expr.c index 134de2446a..7ac7a7ae46 100644 --- a/src/expr.c +++ b/src/expr.c @@ -12,7 +12,7 @@ ** This file contains routines used for analyzing expressions and ** for generating VDBE code that evaluates expressions in SQLite. ** -** $Id: expr.c,v 1.223 2005/09/01 03:07:44 drh Exp $ +** $Id: expr.c,v 1.224 2005/09/05 20:06:49 drh Exp $ */ #include "sqliteInt.h" #include @@ -2078,7 +2078,6 @@ static int analyzeAggregate(void *pArg, Expr *pExpr){ NameContext *pNC = (NameContext *)pArg; Parse *pParse = pNC->pParse; SrcList *pSrcList = pNC->pSrcList; - Expr *pAggExpr; switch( pExpr->op ){ case TK_COLUMN: { @@ -2086,9 +2085,10 @@ static int analyzeAggregate(void *pArg, Expr *pExpr){ if( pExpr->iTable==pSrcList->a[i].iCursor ){ pAgg = pParse->aAgg; for(i=0; inAgg; i++, pAgg++){ + Expr *pE; if( pAgg->isAgg ) continue; - if( (pAggExpr = pAgg->pExpr)->iTable==pExpr->iTable - && pAggExpr->iColumn==pExpr->iColumn ){ + pE = pAgg->pExpr; + if( pE->iTable==pExpr->iTable && pE->iColumn==pExpr->iColumn ){ break; } } diff --git a/src/os_win.c b/src/os_win.c index 4e98a25f2a..c5f6bd933f 100644 --- a/src/os_win.c +++ b/src/os_win.c @@ -88,7 +88,7 @@ static WCHAR *utf8ToUnicode(const char *zFilename){ return 0; } nByte = MultiByteToWideChar(CP_UTF8, 0, zFilename, -1, NULL, 0)*sizeof(WCHAR); - zWideFilename = sqliteMalloc( nByte ); + zWideFilename = sqliteMalloc( nByte*sizeof(zWideFilename[0]) ); if( zWideFilename==0 ){ return 0; } @@ -387,7 +387,7 @@ int sqlite3OsTempFileName(char *zBuf){ GetTempPathW(SQLITE_TEMPNAME_SIZE-30, zWidePath); zMulti = unicodeToUtf8(zWidePath); if( zMulti ){ - memcpy(zTempPath, zMulti, SQLITE_TEMPNAME_SIZE-30); + strncpy(zTempPath, zMulti, SQLITE_TEMPNAME_SIZE-30); zTempPath[SQLITE_TEMPNAME_SIZE-30] = 0; sqliteFree(zMulti); } diff --git a/src/select.c b/src/select.c index 2ff7e282ac..94943a5414 100644 --- a/src/select.c +++ b/src/select.c @@ -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.259 2005/09/01 12:16:29 drh Exp $ +** $Id: select.c,v 1.260 2005/09/05 20:06:49 drh Exp $ */ #include "sqliteInt.h" @@ -2167,8 +2167,7 @@ static int simpleMinMaxQuery(Parse *pParse, Select *p, int eDest, int iParm){ /* If the output is destined for a temporary table, open that table. */ if( eDest==SRT_TempTable ){ - sqlite3VdbeAddOp(v, OP_OpenVirtual, iParm, 0); - sqlite3VdbeAddOp(v, OP_SetNumColumns, iParm, 1); + sqlite3VdbeAddOp(v, OP_OpenVirtual, iParm, 1); } /* Generating code to find the min or the max. Basically all we have diff --git a/src/vdbeaux.c b/src/vdbeaux.c index 60a60dcd15..917716ef45 100644 --- a/src/vdbeaux.c +++ b/src/vdbeaux.c @@ -1703,6 +1703,8 @@ int sqlite3VdbeSerialGet( } case 6: /* 8-byte signed integer */ case 7: { /* IEEE floating point */ + u64 x; + u32 y; #ifndef NDEBUG /* Verify that integers and floating point values use the same ** byte order. The byte order differs on some (broken) architectures. @@ -1711,8 +1713,8 @@ int sqlite3VdbeSerialGet( assert( 1.0==*(double*)&t1 ); #endif - u64 x = (buf[0]<<24) | (buf[1]<<16) | (buf[2]<<8) | buf[3]; - u32 y = (buf[4]<<24) | (buf[5]<<16) | (buf[6]<<8) | buf[7]; + x = (buf[0]<<24) | (buf[1]<<16) | (buf[2]<<8) | buf[3]; + y = (buf[4]<<24) | (buf[5]<<16) | (buf[6]<<8) | buf[7]; x = (x<<32) | y; if( serial_type==6 ){ pMem->i = *(i64*)&x; -- 2.47.2