aboutsummaryrefslogtreecommitdiff
path: root/src/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.c')
-rw-r--r--src/main.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/main.c b/src/main.c
index 9d749ea84..5dcc4dd6e 100644
--- a/src/main.c
+++ b/src/main.c
@@ -1075,13 +1075,17 @@ int sqlite3_create_function_v2(
sqlite3_mutex_enter(db->mutex);
if( xDestroy ){
pArg = (FuncDestructor *)sqlite3DbMallocZero(db, sizeof(FuncDestructor));
- if( !pArg ) goto out;
+ if( !pArg ){
+ xDestroy(p);
+ goto out;
+ }
pArg->xDestroy = xDestroy;
pArg->pUserData = p;
}
rc = sqlite3CreateFunc(db, zFunc, nArg, enc, p, xFunc, xStep, xFinal, pArg);
if( pArg && pArg->nRef==0 ){
assert( rc!=SQLITE_OK );
+ xDestroy(p);
sqlite3DbFree(db, pArg);
}