From: drh Date: Fri, 9 Dec 2011 18:06:44 +0000 (+0000) Subject: Change the VDBE so that all registers are initialized to "Invalid" instead of X-Git-Tag: mountain-lion~8^2~54 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=6e856bc0ccc691825feb7cf189eabdcf6c052003;p=thirdparty%2Fsqlite.git Change the VDBE so that all registers are initialized to "Invalid" instead of NULL and report errors on any attempted read of an Invalid register. This will help prevent future bugs similar to [7bbfb7d442]. FossilOrigin-Name: 0064bab77149768640d7758a3e271d5a1d63b256 --- 6e856bc0ccc691825feb7cf189eabdcf6c052003 diff --cc manifest index 9b3f6a8700,84cc79d6f6..a364c55cdf --- a/manifest +++ b/manifest @@@ -1,5 -1,5 +1,5 @@@ - C Modify\sthe\sOP_Once\sopcode\sso\sthat\sit\sworks\scorrectly\sin\strigger\ssub-programs.\sThis\sis\sa\scandidate\sfix\sfor\s[7bbfb7d442]. - D 2011-12-09T13:24:16.480 -C Remove\san\sunnecessary\scondition. -D 2011-12-09T17:51:30.877 ++C Change\sthe\sVDBE\sso\sthat\sall\sregisters\sare\sinitialized\sto\s"Invalid"\sinstead\sof\nNULL\sand\sreport\serrors\son\sany\sattempted\sread\sof\san\sInvalid\sregister.\s\sThis\nwill\shelp\sprevent\sfuture\sbugs\ssimilar\sto\s[7bbfb7d442]. ++D 2011-12-09T18:06:44.319 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f F Makefile.in 5b4a3e12a850b021547e43daf886b25133b44c07 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23 @@@ -243,7 -243,7 +243,7 @@@ F src/vdbe.c 029add0c5197a61db588824a58 F src/vdbe.h 18f581cac1f4339ec3299f3e0cc6e11aec654cdb F src/vdbeInt.h 23a9506c9ab31e7823d7257d1828d2d7843443a0 F src/vdbeapi.c 86189ebba2c49791d75eaa12929f3ce6527596bd - F src/vdbeaux.c cdd74a86c6281b4393c5f94d8f5e40e160e44e19 -F src/vdbeaux.c ff5eefb43647e1b1e60c1c23407523dbcfd0a86c ++F src/vdbeaux.c 71a0cd6ae14ddb2e2a6d6b97d5b54ae753272682 F src/vdbeblob.c 32f2a4899d67f69634ea4dd93e3f651936d732cb F src/vdbemem.c 2fc78b3e0fabcc1eaa23cd79dd2e30e6dcfe1e56 F src/vdbesort.c 468d43c057063e54da4f1988b38b4f46d60e7790 @@@ -978,7 -978,7 +978,7 @@@ F tool/tostr.awk e75472c2f98dd76e06b8c9 F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f F tool/warnings-clang.sh 9f406d66e750e8ac031c63a9ef3248aaa347ef2a F tool/warnings.sh fbc018d67fd7395f440c28f33ef0f94420226381 - P 3702a31e56fe02d14ce246109b318a124cad9f1a - R 212172c6a4e482305cc0a6c8ccb724d1 - U dan - Z fd67074fb89c049640d6ea2f96341088 -P 421714dad32f3460fa40a7f65e9fa276f5e37f58 -R d509edfce30feab29fb6f6730ef15f2e ++P 557c69055a300b4082830b5f4803091dca1c3140 d9ba023c608bce7768bc08478f9df9243f2e73ce ++R c86cf051b4407cf6125edf9f0e3046a6 + U drh -Z 197b12cf9381c9c365def8e131bb26a7 ++Z b55d92759eb01feac738f44135c5de26 diff --cc manifest.uuid index ae75c08960,1c1bcc40a5..2ddca39cd5 --- a/manifest.uuid +++ b/manifest.uuid @@@ -1,1 -1,1 +1,1 @@@ - 557c69055a300b4082830b5f4803091dca1c3140 -d9ba023c608bce7768bc08478f9df9243f2e73ce ++0064bab77149768640d7758a3e271d5a1d63b256 diff --cc src/vdbeaux.c index b6e13f1335,c8f6911ae1..8b085ea6ce --- a/src/vdbeaux.c +++ b/src/vdbeaux.c @@@ -2135,6 -2136,7 +2136,7 @@@ int sqlite3VdbeHalt(Vdbe *p) if( p->db->mallocFailed ){ p->rc = SQLITE_NOMEM; } - memset(p->aOnceFlag, 0, p->nOnceFlag); ++ if( p->aOnceFlag ) memset(p->aOnceFlag, 0, p->nOnceFlag); closeAllCursors(p); if( p->magic!=VDBE_MAGIC_RUN ){ return SQLITE_OK;