From 8b3c0ae47c775e6e1064f9ad4b016d1a72106401 Mon Sep 17 00:00:00 2001 From: dan Date: Thu, 19 Mar 2015 19:59:30 +0000 Subject: [PATCH] Fix a crash that can occur following an OOM condition within a CREATE VIRTUAL TABLE statement on a utf-16 database. FossilOrigin-Name: 9453e7da046c55715631f10f018e97a336197969 --- manifest | 12 ++++++------ manifest.uuid | 2 +- src/vdbe.c | 5 ++++- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/manifest b/manifest index a1a8b5a964..0e2648fb01 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Fix\sa\sproblem\swith\screating\svirtual\stable\swith\snames\sspecified\susing\smalformed\sutf-8\swithin\sutf-16\sdatabases. -D 2015-03-19T18:56:17.585 +C Fix\sa\scrash\sthat\scan\soccur\sfollowing\san\sOOM\scondition\swithin\sa\sCREATE\sVIRTUAL\sTABLE\sstatement\son\sa\sutf-16\sdatabase. +D 2015-03-19T19:59:30.542 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f F Makefile.in 88a3e6261286db378fdffa1124cad11b3c05f5bb F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23 @@ -293,7 +293,7 @@ F src/update.c 3c4ecc282accf12d39edb8d524cf089645e55a13 F src/utf.c fc6b889ba0779b7722634cdeaa25f1930d93820c F src/util.c 98a7627ca48ad3265b6940915a1d08355eb3fc7e F src/vacuum.c 9460b9de7b2d4e34b0d374894aa6c8a0632be8ec -F src/vdbe.c 33f8e0b1bc928bf7a38526c4e58e0404617b09b9 +F src/vdbe.c b32dc2efe94a2c31ab4584066d47af2b56391f39 F src/vdbe.h 6fc69d9c5e146302c56e163cb4b31d1ee64a18c3 F src/vdbeInt.h bb56fd199d8af1a2c1b9639ee2f70724b4338e3a F src/vdbeapi.c 583d56b129dd27f12bed518270de9ebe521e6a75 @@ -1246,7 +1246,7 @@ F tool/vdbe_profile.tcl 67746953071a9f8f2f668b73fe899074e2c6d8c1 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4 F tool/warnings.sh 0abfd78ceb09b7f7c27c688c8e3fe93268a13b32 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f -P 26d2def8a53094356008861636d66f9ae8f2448a -R d2ae591b867dc2d251eb915bd9224363 +P 9969cff2d0553c9bfa88a437e1bb0cc4200d49d7 +R 8dbccb3b8b8000074fd25bdffb4c9d6a U dan -Z 0a1bb76f793e7ed736ebaafb02806892 +Z 868f2b8fd59504f6d90032dd8002c42b diff --git a/manifest.uuid b/manifest.uuid index a2cd7b4ce8..0492fcd8e8 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -9969cff2d0553c9bfa88a437e1bb0cc4200d49d7 \ No newline at end of file +9453e7da046c55715631f10f018e97a336197969 \ No newline at end of file diff --git a/src/vdbe.c b/src/vdbe.c index 00b6cb5194..82c3269e73 100644 --- a/src/vdbe.c +++ b/src/vdbe.c @@ -6021,7 +6021,10 @@ case OP_VCreate: { rc = sqlite3VdbeMemCopy(&sMem, &aMem[pOp->p2]); if( rc==SQLITE_OK ){ const char *zTab = (const char*)sqlite3_value_text(&sMem); - rc = sqlite3VtabCallCreate(db, pOp->p1, zTab, &p->zErrMsg); + assert( zTab || db->mallocFailed ); + if( zTab ){ + rc = sqlite3VtabCallCreate(db, pOp->p1, zTab, &p->zErrMsg); + } } sqlite3VdbeMemRelease(&sMem); break; -- 2.47.2