From 4e0f995347be40b66bdd8ab14c52367d891173df Mon Sep 17 00:00:00 2001 From: drh Date: Wed, 27 Feb 2002 01:53:13 +0000 Subject: [PATCH] The user-defined function routines failed to detect a malloc() failure. (CVS 397) FossilOrigin-Name: 085b0d671a1dac964693d69d866224de155dfe4c --- manifest | 14 +++++++------- manifest.uuid | 2 +- src/expr.c | 3 ++- src/main.c | 4 +++- 4 files changed, 13 insertions(+), 10 deletions(-) diff --git a/manifest b/manifest index d444e27bae..6dc9e9595d 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Bug\sfixes\sin\sthe\sVIEW\simplementation.\s(CVS\s396) -D 2002-02-27T01:47:12 +C The\suser-defined\sfunction\sroutines\sfailed\sto\sdetect\sa\smalloc()\sfailure.\s(CVS\s397) +D 2002-02-27T01:53:13 F Makefile.in 50f1b3351df109b5774771350d8c1b8d3640130d F Makefile.template 89e373b2dad0321df00400fa968dc14b61a03296 F README a4c0ba11354ef6ba0776b400d057c59da47a4cc0 @@ -23,12 +23,12 @@ F src/btree.c 495275fe14f3b718cf2f691dce979d4c0e1f8e5d F src/btree.h 8abeabfe6e0b1a990b64fa457592a6482f6674f3 F src/build.c 7ada2426caba70cb1072ba268bedb694b5018065 F src/delete.c 950d8f9097361419f1963875f9943344b469cf02 -F src/expr.c 4716119eea61b4f47225fca2338e75baa30b1315 +F src/expr.c 92ff4a2d87f7443f6081ba2d51e25c27e10c7b4e F src/func.c bed0099aaa558f8bfc50d9349bf7da2c99903f47 F src/hash.c cc259475e358baaf299b00a2c7370f2b03dda892 F src/hash.h dca065dda89d4575f3176e75e9a3dc0f4b4fb8b9 F src/insert.c 164d2d5e943268a8ff0594e1947599e04df0ce11 -F src/main.c 69ba23401427f18f6eb1e9b92a3bd3236e2e39ad +F src/main.c cbfa66d53578935790488f37f476d4932e36c01a F src/md5.c 52f677bfc590e09f71d07d7e327bd59da738d07c F src/os.c f6bc9b7ab530346bb7fef2ed39f2f1f214bc14ea F src/os.h a17596ecc7f38a228b83ecdb661fb03ce44726d6 @@ -127,7 +127,7 @@ F www/speed.tcl 83457b2bf6bb430900bd48ca3dd98264d9a916a5 F www/sqlite.tcl 8b5884354cb615049aed83039f8dfe1552a44279 F www/tclsqlite.tcl 829b393d1ab187fd7a5e978631b3429318885c49 F www/vdbe.tcl 2013852c27a02a091d39a766bc87cff329f21218 -P 63b87f2ea6cd78f039bf40026d21b18de20b3ba7 -R 9c2c59a14c868fd7e37dce1c3892e2d4 +P 668ef6380eba256ef82477b63aef850249a619a0 +R 672b44d109bf7bbf0ab39b1722058efe U drh -Z e0d30da2ff6970c032fa0a7ae0570fac +Z f74017b4041ef28aa366f6915101de05 diff --git a/manifest.uuid b/manifest.uuid index fd0d0befb6..dd7aaa092c 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -668ef6380eba256ef82477b63aef850249a619a0 \ No newline at end of file +085b0d671a1dac964693d69d866224de155dfe4c \ No newline at end of file diff --git a/src/expr.c b/src/expr.c index 979ff63ea2..4be07e5f85 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.46 2002/02/27 01:47:12 drh Exp $ +** $Id: expr.c,v 1.47 2002/02/27 01:53:13 drh Exp $ */ #include "sqliteInt.h" @@ -1396,6 +1396,7 @@ UserFunc *sqliteFindUserFunction( ){ UserFunc *pFirst, *p, *pMaybe; pFirst = p = (UserFunc*)sqliteHashFind(&db->userFunc, zName, nName); + if( p==0 ) return 0; if( !createFlag && nArg<0 ){ while( p && p->xFunc==0 && p->xStep==0 ){ p = p->pNext; } return p; diff --git a/src/main.c b/src/main.c index 3ec2f5dd50..6d78afbf15 100644 --- a/src/main.c +++ b/src/main.c @@ -14,7 +14,7 @@ ** other files are for internal use by SQLite and should not be ** accessed by users of the library. ** -** $Id: main.c,v 1.63 2002/02/24 01:55:17 drh Exp $ +** $Id: main.c,v 1.64 2002/02/27 01:53:13 drh Exp $ */ #include "sqliteInt.h" #include "os.h" @@ -648,6 +648,7 @@ int sqlite_create_function( UserFunc *p; if( db==0 || zName==0 ) return 1; p = sqliteFindUserFunction(db, zName, strlen(zName), nArg, 1); + if( p==0 ) return 1; p->xFunc = xFunc; p->xStep = 0; p->xFinalize = 0; @@ -663,6 +664,7 @@ int sqlite_create_aggregate( UserFunc *p; if( db==0 || zName==0 ) return 1; p = sqliteFindUserFunction(db, zName, strlen(zName), nArg, 1); + if( p==0 ) return 1; p->xFunc = 0; p->xStep = xStep; p->xFinalize = xFinalize;