]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Updates to sqlite3_finalize() documentation.
authordrh <drh@noemail.net>
Wed, 29 Sep 2010 01:54:00 +0000 (01:54 +0000)
committerdrh <drh@noemail.net>
Wed, 29 Sep 2010 01:54:00 +0000 (01:54 +0000)
FossilOrigin-Name: 8c5994cf8e5ae0c1cb8f655ac83e52e668e75c86

manifest
manifest.uuid
src/sqlite.h.in
src/vdbeapi.c

index 6457d567e42a9d54b6a95d89c27a2c15a8f60686..bd307859510b1dbd966460c112c0a58e18c1a25b 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,8 +1,8 @@
 -----BEGIN PGP SIGNED MESSAGE-----
 Hash: SHA1
 
-C Simplify\sthe\stest\sthat\sdetermines\sif\sthe\sname\sof\sa\snew\stable\scollides\swith\na\sprior\sindex\sname.
-D 2010-09-28T20:26:44
+C Updates\sto\ssqlite3_finalize()\sdocumentation.
+D 2010-09-29T01:54:01
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in c599a15d268b1db2aeadea19df2adc3bf2eb6bee
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -178,7 +178,7 @@ F src/resolve.c 1c0f32b64f8e3f555fe1f732f9d6f501a7f05706
 F src/rowset.c 69afa95a97c524ba6faf3805e717b5b7ae85a697
 F src/select.c cf3013b1953348c7c6ff9636342e87b9fda68466
 F src/shell.c 8517fc1f9c59ae4007e6cc8b9af91ab231ea2056
-F src/sqlite.h.in 4d59b9292a52d5601a050e29a3508e5c0a2821fa
+F src/sqlite.h.in a5b50e1bc4d4d9a3cc95386747220a839d0c40f7
 F src/sqlite3ext.h 69dfb8116af51b84a029cddb3b35062354270c89
 F src/sqliteInt.h ea31c7867d910c1da9b20adb6614e474011fbae0
 F src/sqliteLimit.h a17dcd3fb775d63b64a43a55c54cb282f9726f44
@@ -231,7 +231,7 @@ F src/vacuum.c 924bd1bcee2dfb05376f79845bd3b4cec7b54b2f
 F src/vdbe.c 69812aabf486a2d6a5b0960ffd9a47d141442735
 F src/vdbe.h 4de0efb4b0fdaaa900cf419b35c458933ef1c6d2
 F src/vdbeInt.h 7f4cf1b2b69bef3a432b1f23dfebef57275436b4
-F src/vdbeapi.c 14040ffad59a9961468a457754d30266e71ebb2d
+F src/vdbeapi.c 03cddfa4f85cadf608c0d28ff6b622b7da432446
 F src/vdbeaux.c de0b06b11a25293e820a49159eca9f1c51a64716
 F src/vdbeblob.c 258a6010ba7a82b72b327fb24c55790655689256
 F src/vdbemem.c 8ff4f80a35d51f3690c191ec44778ef4bf949ac0
@@ -872,14 +872,14 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
 F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
 F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
-P 655991ec8a781d67d69fc353853403b9a811acf2
-R 3ebe614f99889b0121e3dcd673c123b6
+P 3f30f00a384d23582f3fe5e68add7fb7d7834926
+R b0980111e3e0b2d0ef05c30ea2a11545
 U drh
-Z c1fbe6db9cf459e94c2fe99b3554c8bf
+Z 077dc8851dd441abeb5ea23f673b000f
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1.4.6 (GNU/Linux)
 
-iD8DBQFMok+HoxKgR168RlERApXZAJ4mdLGLMy3sXIbrGw+WhaboRRTHtQCfX1yP
-5sAeF2PvuF+fHt0Vxh8vt0g=
-=ut/t
+iD8DBQFMopw8oxKgR168RlERAscVAJ9rRCu1ZaOtDkJQt3k0WWkFfgmYaQCfU+t0
+nRPk3cMqqgV9u8P4XFWBmsc=
+=z7xR
 -----END PGP SIGNATURE-----
index 83f44fdfad983b7527ebd85942dee059e4e0c277..e5987fbcd3183bb358868290fdd3ace2cd3aa14d 100644 (file)
@@ -1 +1 @@
-3f30f00a384d23582f3fe5e68add7fb7d7834926
\ No newline at end of file
+8c5994cf8e5ae0c1cb8f655ac83e52e668e75c86
\ No newline at end of file
index 90c3b6e7db5836383db0aca4e1982bbe60dc26db..2bbd68765323b6132d471bdb082ec7510a98ae0b 100644 (file)
@@ -3260,17 +3260,26 @@ sqlite3_value *sqlite3_column_value(sqlite3_stmt*, int iCol);
 ** CAPI3REF: Destroy A Prepared Statement Object
 **
 ** ^The sqlite3_finalize() function is called to delete a [prepared statement].
-** ^If the statement was executed successfully or not executed at all, then
-** SQLITE_OK is returned. ^If execution of the statement failed then an
-** [error code] or [extended error code] is returned.
-**
-** ^This routine can be called at any point during the execution of the
-** [prepared statement].  ^If the virtual machine has not
-** completed execution when this routine is called, that is like
-** encountering an error or an [sqlite3_interrupt | interrupt].
-** ^Incomplete updates may be rolled back and transactions canceled,
-** depending on the circumstances, and the
-** [error code] returned will be [SQLITE_ABORT].
+** ^If the most recent evaluation of the statement encountered no errors or
+** or if the statement is never been evaluated, then sqlite3_finalize() returns
+** SQLITE_OK.  ^If the most recent evaluation of statement S failed, then
+** sqlite3_finalize(S) returns the appropriate [error code] or
+** [extended error code].
+**
+** ^The sqlite3_finalize(S) routine can be called at any point during
+** the life cycle of [prepared statement] S:
+** before statement S is ever evaluated, after
+** one or more calls to [sqlite3_reset()], or after any call
+** to [sqlite3_step()] regardless of whether or not the statement has
+** completed execution.
+**
+** ^Invoking sqlite3_finalize() on a NULL pointer is a harmless no-op.
+**
+** The application must finalize every [prepared statement] in order to avoid
+** resource leaks.  It is a grievous error for the application to try to use
+** a prepared statement after it has been finalized.  Any use of a prepared
+** statement after it has been finalized can result in undefined and
+** undesirable behavior such as segfaults and heap corruption.
 */
 int sqlite3_finalize(sqlite3_stmt *pStmt);
 
index 8ae7c526e0dad289b1b0e554132e5db4af3b1f48..96a19e04e2d08430869bd85bc8ad390b7d3a6c6a 100644 (file)
@@ -65,6 +65,8 @@ static int vdbeSafetyNotNull(Vdbe *p){
 int sqlite3_finalize(sqlite3_stmt *pStmt){
   int rc;
   if( pStmt==0 ){
+    /* IMPLEMENTATION-OF: R-57228-12904 Invoking sqlite3_finalize() on a NULL
+    ** pointer is a harmless no-op. */
     rc = SQLITE_OK;
   }else{
     Vdbe *v = (Vdbe*)pStmt;