Fix some issues with out-of-memory recovery. (CVS 4710)

FossilOrigin-Name: 23181f86896e7c9e993e00032e735e67ee6b2e71
This commit is contained in:
drh 2008-01-13 19:02:11 +00:00
parent 949f9cd565
commit 0e359b30a9
5 changed files with 16 additions and 15 deletions

View File

@ -1,5 +1,5 @@
C The\ssqlite3_trace()\scallback\snow\sprints\sa\smessage\sas\seach\strigger\sfires\nwithin\sa\sstatement.\s(CVS\s4709)
D 2008-01-12T21:35:57
C Fix\ssome\sissues\swith\sout-of-memory\srecovery.\s(CVS\s4710)
D 2008-01-13T19:02:11
F Makefile.arm-wince-mingw32ce-gcc ac5f7b2cef0cd850d6f755ba6ee4ab961b1fadf7
F Makefile.in 30789bf70614bad659351660d76b8e533f3340e9
F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
@ -92,7 +92,7 @@ F src/complete.c 4cf68fd75d60257524cbe74f87351b9848399131
F src/date.c 49c5a6d2de6c12000905b4d36868b07d3011bbf6
F src/delete.c 00e536847b8eedc5d35f89f7f38a8a7c1d2a22f9
F src/experimental.c 1b2d1a6cd62ecc39610e97670332ca073c50792b
F src/expr.c 14130c27fba6fa3c14dcfc4891c534a8ee71cc3c
F src/expr.c be1018f2911bd93e6fc34f216ed263ce733569b6
F src/func.c 996071cf0af9d967e58b69fce1909555059ebc7d
F src/hash.c 45a7005aac044b6c86bd7e49c44bc15d30006d6c
F src/hash.h 031cd9f915aff27e12262cb9eb570ac1b8326b53
@ -131,7 +131,7 @@ F src/pragma.c b4e77e057990bb2c295c63327406d9bcbf6c9c08
F src/prepare.c c31a879d6795f4765fd0b113675c6debbc96b7fd
F src/printf.c eb27822ba2eec669161409ca31279a24c26ac910
F src/random.c 4a22746501bf36b0a088c66e38dde5daba6a35da
F src/select.c 34c138d90771a5919fa181f7ddde75277d6a9fc6
F src/select.c 16ba6ec0b3de4971579e66964ba2f25e0b43c78b
F src/server.c 087b92a39d883e3fa113cae259d64e4c7438bc96
F src/shell.c 5391e889384d2062249f668110d64ed16f601c4b
F src/sqlite.h.in 2a7e3776534bbe6ff2cdc058f3abebe91e7e429f
@ -163,7 +163,7 @@ F src/test_server.c a6ece6c835e7eae835054124e09e947e422b1ac5
F src/test_tclvar.c b2d1115e4d489179d3f029e765211b2ad527ba59
F src/test_thread.c e297dd41db0b249646e69f97d36ec13e56e8b730
F src/tokenize.c a4e04438c11fed2c67ec47fe3edbef9cca2d1b48
F src/trigger.c da3e11df34d34c4341d9417d8033facbae16d9e8
F src/trigger.c 3a863b9952164ab5de58406c26daf06144bbddc4
F src/update.c aad823f97a930e6982264299863837d4c6107d3b
F src/utf.c ef4b7d83bae533b76c3e1bf635b113fdad86a736
F src/util.c 05f31144bbd3f1a24f4139ae029c42545cb72624
@ -606,7 +606,7 @@ F www/tclsqlite.tcl 8be95ee6dba05eabcd27a9d91331c803f2ce2130
F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0
F www/version3.tcl 890248cf7b70e60c383b0e84d77d5132b3ead42b
F www/whentouse.tcl fc46eae081251c3c181bd79c5faef8195d7991a5
P 426f31ecdd05d1179a2e49c2ca1666011cede9c6
R 3435d52d4f2b4750bec1183c99c98b94
P 110c000d86bd4a0b4b946c62d11a435426b02d16
R f95030f95502c6367aca6894c92c5e05
U drh
Z 0d14628a3647710d605d98d6d56b6e09
Z 562fbfe4435b61e96b57af5488c68d5b

View File

@ -1 +1 @@
110c000d86bd4a0b4b946c62d11a435426b02d16
23181f86896e7c9e993e00032e735e67ee6b2e71

View File

@ -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.344 2008/01/12 19:03:49 drh Exp $
** $Id: expr.c,v 1.345 2008/01/13 19:02:11 drh Exp $
*/
#include "sqliteInt.h"
#include <ctype.h>
@ -2418,7 +2418,8 @@ int sqlite3ExprCodeTemp(Parse *pParse, Expr *pExpr, int *pReg){
*/
int sqlite3ExprCode(Parse *pParse, Expr *pExpr, int target){
int inReg = sqlite3ExprCodeTarget(pParse, pExpr, target);
if( inReg!=target ){
assert( pParse->pVdbe || pParse->db->mallocFailed );
if( inReg!=target && pParse->pVdbe ){
sqlite3VdbeAddOp2(pParse->pVdbe, (inReg>0 ? OP_SCopy : OP_Move),
inReg, target);
}

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.400 2008/01/12 21:35:57 drh Exp $
** $Id: select.c,v 1.401 2008/01/13 19:02:11 drh Exp $
*/
#include "sqliteInt.h"
@ -3540,7 +3540,7 @@ int sqlite3Select(
flag = minMaxQuery(pParse, p);
if( flag ){
pMinMax = sqlite3ExprListDup(db, p->pEList->a[0].pExpr->pList);
if( pMinMax ){
if( pMinMax && !db->mallocFailed ){
pMinMax->a[0].sortOrder = ((flag==ORDERBY_MIN)?0:1);
pMinMax->a[0].pExpr->op = TK_COLUMN;
pDel = pMinMax;

View File

@ -765,6 +765,7 @@ int sqlite3CodeRowTrigger(
u32 *piNewColMask /* OUT: Mask of columns used from the NEW.* table */
){
Trigger *p;
sqlite3 *db = pParse->db;
TriggerStack trigStackEntry;
trigStackEntry.oldColMask = 0;
@ -777,7 +778,6 @@ int sqlite3CodeRowTrigger(
for(p=pTab->pTrigger; p; p=p->pNext){
int fire_this = 0;
sqlite3 *db = pParse->db;
/* Determine whether we should code this trigger */
if(
@ -808,7 +808,7 @@ int sqlite3CodeRowTrigger(
#ifndef SQLITE_OMIT_TRACE
sqlite3VdbeAddOp4(pParse->pVdbe, OP_Trace, 0, 0, 0,
sqlite3_mprintf("-- TRIGGER %s", p->name),
sqlite3MPrintf(db, "-- TRIGGER %s", p->name),
P4_DYNAMIC);
#endif
memset(&sNC, 0, sizeof(sNC));