From 44e95d4f028e537c411e746e312af658b6153dff Mon Sep 17 00:00:00 2001 From: mistachkin Date: Thu, 28 Jul 2016 22:23:26 +0000 Subject: [PATCH 1/7] Make the extension auto-loading mechanism work with the __stdcall calling convention. Also, fix a couple Tcl command calling conventions missed in the previous check-in. FossilOrigin-Name: 3ea567c4b07b2a7a027b9b5cb8250ab687803698 --- Makefile.msc | 11 +++++++++++ ext/misc/vfsstat.c | 2 +- manifest | 30 +++++++++++++++--------------- manifest.uuid | 2 +- src/loadext.c | 44 ++++++++++++++++++++++++++++++-------------- src/sqlite.h.in | 8 ++++++-- src/sqlite3ext.h | 14 ++++++++++++-- src/tclsqlite.c | 20 +++++++++++++++++--- src/test_autoext.c | 12 ++++++------ src/test_func.c | 18 +++++++++++------- src/test_multiplex.c | 2 +- src/test_thread.c | 4 ++-- 12 files changed, 113 insertions(+), 54 deletions(-) diff --git a/Makefile.msc b/Makefile.msc index b4cb94a5b8..527efd8f7d 100644 --- a/Makefile.msc +++ b/Makefile.msc @@ -24,6 +24,13 @@ USE_AMALGAMATION = 1 USE_FULLWARN = 0 !ENDIF +# Set this non-0 to enable full runtime error checks (-RTC1, etc). This +# has no effect if (any) optimizations are enabled. +# +!IFNDEF USE_RUNTIME_CHECKS +USE_RUNTIME_CHECKS = 0 +!ENDIF + # Set this non-0 to use "stdcall" calling convention for the core library # and shell executable. # @@ -847,6 +854,10 @@ RCC = $(RCC) -D_DEBUG !IF $(DEBUG)>1 || $(OPTIMIZATIONS)==0 TCC = $(TCC) -Od BCC = $(BCC) -Od +!IF $(USE_RUNTIME_CHECKS)!=0 +TCC = $(TCC) -RTC1 +BCC = $(BCC) -RTC1 +!ENDIF !ELSEIF $(OPTIMIZATIONS)>=3 TCC = $(TCC) -Ox BCC = $(BCC) -Ox diff --git a/ext/misc/vfsstat.c b/ext/misc/vfsstat.c index af088d6655..14753d277d 100644 --- a/ext/misc/vfsstat.c +++ b/ext/misc/vfsstat.c @@ -809,7 +809,7 @@ int sqlite3_vfsstat_init( vstat_vfs.base.szOsFile = sizeof(VStatFile) + vstat_vfs.pVfs->szOsFile; rc = sqlite3_vfs_register(&vstat_vfs.base, 1); if( rc==SQLITE_OK ){ - rc = sqlite3_auto_extension((void(*)(void))vstatRegister); + rc = sqlite3_auto_extension(vstatRegister); } if( rc==SQLITE_OK ) rc = SQLITE_OK_LOAD_PERMANENTLY; return rc; diff --git a/manifest b/manifest index 4df76977b0..36d529bb7a 100644 --- a/manifest +++ b/manifest @@ -1,8 +1,8 @@ -C The\s'sqlite3ext.h'\scontent\sshould\sbe\sprocessed\sbefore\sbeing\sincluded\sin\sthe\samalgamation. -D 2016-07-28T19:28:35.475 +C Make\sthe\sextension\sauto-loading\smechanism\swork\swith\sthe\s__stdcall\scalling\sconvention.\s\sAlso,\sfix\sa\scouple\sTcl\scommand\scalling\sconventions\smissed\sin\sthe\sprevious\scheck-in. +D 2016-07-28T22:23:26.522 F Makefile.in 6c20d44f72d4564f11652b26291a214c8367e5db F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434 -F Makefile.msc eefec7a26bf73bb04f2241058e23a3ec8a43f656 +F Makefile.msc 3340e479e5221f06c3d61726f8f7efff885e4233 F README.md 8ecc12493ff9f820cdea6520a9016001cb2e59b7 F VERSION cb29eb11e493dd85b3eeec4053c03949bf98478e F aclocal.m4 a5c22d164aff7ed549d53a90fa56d56955281f50 @@ -223,7 +223,7 @@ F ext/misc/showauth.c 732578f0fe4ce42d577e1c86dc89dd14a006ab52 F ext/misc/spellfix.c a4723b6aff748a417b5091b68a46443265c40f0d F ext/misc/totype.c 4a167594e791abeed95e0a8db028822b5e8fe512 F ext/misc/vfslog.c fe40fab5c077a40477f7e5eba994309ecac6cc95 -F ext/misc/vfsstat.c 6110aeeaab2f1df17a923c8a8acef3c74f6dc515 +F ext/misc/vfsstat.c bf10ef0bc51e1ad6756629e1edb142f7a8db1178 F ext/misc/vtshim.c babb0dc2bf116029e3e7c9a618b8a1377045303e F ext/misc/wholenumber.c 784b12543d60702ebdd47da936e278aa03076212 F ext/rbu/rbu.c b2c0b5e6ae1a89affc0edfc127ebfa5f637a0ce4 @@ -347,7 +347,7 @@ F src/hash.h ab34c5c54a9e9de2e790b24349ba5aab3dbb4fd4 F src/hwtime.h 747c1bbe9df21a92e9c50f3bbec1de841dc5e5da F src/insert.c 8f4e9fcbd8e95e85f15647ba8b413b18d556ec2b F src/legacy.c 75d3023be8f0d2b99d60f905090341a03358c58e -F src/loadext.c 5dd8b5a67d32a98bb75657c2a9e48b2cedbf13a4 +F src/loadext.c 4e26039f8d2e91acd57e55fcc31477aa37a3aa80 F src/main.c 16c1b2114eae8804caf3a8de8cb47bf2c6d83ad3 F src/malloc.c 1443d1ad95d67c21d77af7ae3f44678252f0efec F src/mem0.c 6a55ebe57c46ca1a7d98da93aaa07f99f1059645 @@ -385,14 +385,14 @@ F src/resolve.c cca3aa77b95706df5d635a2141a4d1de60ae6598 F src/rowset.c 7b7e7e479212e65b723bf40128c7b36dc5afdfac F src/select.c f3c6e9065fb34f6a23af27ec7f1f717ffbfc2ee4 F src/shell.c 9351fc6de11e1d908648c0a92d85627138e3dee5 -F src/sqlite.h.in a03063e698a43cc5c996cd341f39439a6ce58304 +F src/sqlite.h.in 856ab22cfcec0ba94d2f0139a72a9797343687b3 F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8 -F src/sqlite3ext.h 46f300b6e300e0fa916d7d58c44b53415b8471a9 +F src/sqlite3ext.h 978c062d3fa59a22c6d57305b9f290e3a26110c3 F src/sqliteInt.h 14516943867eb2c30ce0e3670299958f59ade052 F src/sqliteLimit.h c0373387c287c8d0932510b5547ecde31b5da247 F src/status.c 5b18f9526900f61189ab0b83f1ef41d9f871a2ab F src/table.c 5226df15ab9179b9ed558d89575ea0ce37b03fc9 -F src/tclsqlite.c 342379845d52c62a778c76c3dd0a2695af723e04 +F src/tclsqlite.c 2ca362fa9c9762f705169aa5b2e75d688f4391f7 F src/test1.c 906a04b649c7139e943193a3905d583e325c30c7 F src/test2.c b7174313e993754303a8b33c43df7c44b46857ab F src/test3.c 1339a40be39650ae83894b6578f971dc7f96ea8a @@ -403,7 +403,7 @@ F src/test7.c 5612e9aecf934d6df7bba6ce861fdf5ba5456010 F src/test8.c 4f4904721167b32f7a4fa8c7b32a07a673d6cc86 F src/test9.c 12e5ba554d2d1cbe0158f6ab3f7ffcd7a86ee4e5 F src/test_async.c 195ab49da082053fdb0f949c114b806a49ca770a -F src/test_autoext.c 6c8fe00caa3f38396f0990467179e9d1adb39ddd +F src/test_autoext.c cc69375c006b7bac6094ec602f52525350fd5229 F src/test_backup.c bf5da90c9926df0a4b941f2d92825a01bbe090a0 F src/test_bestindex.c d23f80d334c59662af69191854c76b8d3d0c8c96 F src/test_blob.c a0f7ad49a0c9d4b72f693fe2a71c58d7e507174d @@ -412,7 +412,7 @@ F src/test_config.c 4d3d4a886416f369771d69a6dba926866deda788 F src/test_demovfs.c a0c3bdd45ed044115c2c9f7779e56eafff18741e F src/test_devsym.c 4e58dec2602d8e139ca08659f62a62450587cb58 F src/test_fs.c ac62ce7d5c0c23aa6932891cad5746945564c91c -F src/test_func.c 9cea6fee7ece5f46aa26e060b35e10dc6ba708cf +F src/test_func.c 7dceef0e0556933a751af9b73478519b6dc12f0f F src/test_hexio.c 1d4469ca61ab202a1fcec6543f584d2407205e8d F src/test_init.c 4413c211a94b62157ca4c145b3f27c497f03c664 F src/test_intarray.c 988fc61cb0ff539f4172c0d95f15287c92516f64 @@ -420,7 +420,7 @@ F src/test_intarray.h f3b7672f5d1056eac563c0d6ea8480a660b1475c F src/test_journal.c d3b83f2bcb7792c709e57abddc456a2b1818643a F src/test_loadext.c 337056bae59f80b9eb00ba82088b39d0f4fe6dfd F src/test_malloc.c c05f6c40bd6c8bfe5f1718212f81fd5687f91766 -F src/test_multiplex.c af2792ec4436d442d1bd00b8803470a25111bad3 +F src/test_multiplex.c 371d3874fd6365f18468d1c131e153e5c9abe95e F src/test_multiplex.h 5436d03f2d0501d04f3ed50a75819e190495b635 F src/test_mutex.c 7f4337ba23ee6b1d2ec81c189653608cb069926a F src/test_onefile.c 416f87a28d6d673352d33fc4b1c7d39db878e50f @@ -435,7 +435,7 @@ F src/test_sqllog.c 0d138a8180a312bf996b37fa66da5c5799d4d57b F src/test_superlock.c 4839644b9201da822f181c5bc406c0b2385f672e F src/test_syscall.c 1073306ba2e9bfc886771871a13d3de281ed3939 F src/test_tclvar.c df9fe1213c2634687a9ca0b0bec0d2119d359ae3 -F src/test_thread.c c7c40494b7a0603ebb6eb97c904545c0dceca5ff +F src/test_thread.c a122592c2b857c79eb4ee4bacb62a5a6c8fe4c6f F src/test_vfs.c f0186261a24de2671d080bcd8050732f0cb64f6e F src/test_vfstrace.c bab9594adc976cbe696ff3970728830b4c5ed698 F src/test_windirent.c 8f5fada630348558d5745b334702f301da1ffc61 @@ -1508,7 +1508,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P fd784887e125bf95f4799ad09cbcba6795173487 -R 159053f8c66afb3fed693021893388d2 +P cbe1de4799df4d512bc175f51ed99c6ec6d5a4d1 +R bda25e48e90849454c6e864127930d74 U mistachkin -Z 1fc3620b6fdad23d7ecfea7d673497bf +Z 008c4b78efecf8010a475c91e6246b39 diff --git a/manifest.uuid b/manifest.uuid index ad3e416aac..0a08bdb4e1 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -cbe1de4799df4d512bc175f51ed99c6ec6d5a4d1 \ No newline at end of file +3ea567c4b07b2a7a027b9b5cb8250ab687803698 \ No newline at end of file diff --git a/src/loadext.c b/src/loadext.c index ce1f5317c6..525272d7fe 100644 --- a/src/loadext.c +++ b/src/loadext.c @@ -21,6 +21,14 @@ #include #ifndef SQLITE_OMIT_LOAD_EXTENSION +/* +** This is the function signature used for all extension entry points. +*/ +typedef int (*sqlite3_loadext_entry)( + sqlite3 *db, /* Handle to the database. */ + char **pzErrMsg, /* Used to set error string on failure. */ + const sqlite3_api_routines *pThunk /* Extension API function pointers. */ +); /* ** Some API routines are omitted when various features are @@ -111,6 +119,10 @@ #define sqlite3_blob_reopen 0 #endif +#if defined(SQLITE_OMIT_TRACE) +# define sqlite3_trace_v2 0 +#endif + /* ** The following structure contains pointers to all SQLite API routines. ** A pointer to this structure is passed into extensions when they are @@ -416,7 +428,10 @@ static const sqlite3_api_routines sqlite3Apis = { sqlite3_strlike, sqlite3_db_cacheflush, /* Version 3.12.0 and later */ - sqlite3_system_errno + sqlite3_system_errno, + /* Version 3.14.0 and later */ + sqlite3_trace_v2, + sqlite3_expanded_sql }; /* @@ -439,7 +454,7 @@ static int sqlite3LoadExtension( ){ sqlite3_vfs *pVfs = db->pVfs; void *handle; - int (*xInit)(sqlite3*,char**,const sqlite3_api_routines*); + sqlite3_loadext_entry xInit; char *zErrmsg = 0; const char *zEntry; char *zAltEntry = 0; @@ -498,8 +513,7 @@ static int sqlite3LoadExtension( } return SQLITE_ERROR; } - xInit = (int(*)(sqlite3*,char**,const sqlite3_api_routines*)) - sqlite3OsDlSym(pVfs, handle, zEntry); + xInit = (sqlite3_loadext_entry)sqlite3OsDlSym(pVfs, handle, zEntry); /* If no entry point was specified and the default legacy ** entry point name "sqlite3_extension_init" was not found, then @@ -531,8 +545,7 @@ static int sqlite3LoadExtension( } memcpy(zAltEntry+iEntry, "_init", 6); zEntry = zAltEntry; - xInit = (int(*)(sqlite3*,char**,const sqlite3_api_routines*)) - sqlite3OsDlSym(pVfs, handle, zEntry); + xInit = (sqlite3_loadext_entry)sqlite3OsDlSym(pVfs, handle, zEntry); } if( xInit==0 ){ if( pzErrMsg ){ @@ -662,7 +675,9 @@ static SQLITE_WSD struct sqlite3AutoExtList { ** Register a statically linked extension that is automatically ** loaded by every new database connection. */ -int sqlite3_auto_extension(void (*xInit)(void)){ +int sqlite3_auto_extension( + void (*xInit)(sqlite3 *, char **, const void *) /* Extension entry point */ +){ int rc = SQLITE_OK; #ifndef SQLITE_OMIT_AUTOINIT rc = sqlite3_initialize(); @@ -678,7 +693,7 @@ int sqlite3_auto_extension(void (*xInit)(void)){ wsdAutoextInit; sqlite3_mutex_enter(mutex); for(i=0; i=0; i--){ - if( wsdAutoext.aExt[i]==xInit ){ + if( wsdAutoext.aExt[i]==(void*)xInit ){ wsdAutoext.nExt--; wsdAutoext.aExt[i] = wsdAutoext.aExt[wsdAutoext.nExt]; n++; @@ -756,7 +773,7 @@ void sqlite3AutoLoadExtensions(sqlite3 *db){ u32 i; int go = 1; int rc; - int (*xInit)(sqlite3*,char**,const sqlite3_api_routines*); + sqlite3_loadext_entry xInit; wsdAutoextInit; if( wsdAutoext.nExt==0 ){ @@ -773,8 +790,7 @@ void sqlite3AutoLoadExtensions(sqlite3 *db){ xInit = 0; go = 0; }else{ - xInit = (int(*)(sqlite3*,char**,const sqlite3_api_routines*)) - wsdAutoext.aExt[i]; + xInit = (sqlite3_loadext_entry)wsdAutoext.aExt[i]; } sqlite3_mutex_leave(mutex); zErrmsg = 0; diff --git a/src/sqlite.h.in b/src/sqlite.h.in index 02ae22c346..104e465467 100644 --- a/src/sqlite.h.in +++ b/src/sqlite.h.in @@ -5707,7 +5707,9 @@ int sqlite3_enable_load_extension(sqlite3 *db, int onoff); ** See also: [sqlite3_reset_auto_extension()] ** and [sqlite3_cancel_auto_extension()] */ -int sqlite3_auto_extension(void (*xEntryPoint)(void)); +int sqlite3_auto_extension( + void (*xEntryPoint)(sqlite3 *, char **, const void *) +); /* ** CAPI3REF: Cancel Automatic Extension Loading @@ -5719,7 +5721,9 @@ int sqlite3_auto_extension(void (*xEntryPoint)(void)); ** unregistered and it returns 0 if X was not on the list of initialization ** routines. */ -int sqlite3_cancel_auto_extension(void (*xEntryPoint)(void)); +int sqlite3_cancel_auto_extension( + void (*xEntryPoint)(sqlite3 *, char **, const void *) +); /* ** CAPI3REF: Reset Automatic Extension Loading diff --git a/src/sqlite3ext.h b/src/sqlite3ext.h index 338e1becd5..d79ca826de 100644 --- a/src/sqlite3ext.h +++ b/src/sqlite3ext.h @@ -251,12 +251,12 @@ struct sqlite3_api_routines { char *(*vsnprintf)(int,char*,const char*,va_list); int (*wal_checkpoint_v2)(sqlite3*,const char*,int,int*,int*); /* Version 3.8.7 and later */ - int (*auto_extension)(void(*)(void)); + int (*auto_extension)(void(*)(sqlite3*,char**,const void*)); int (*bind_blob64)(sqlite3_stmt*,int,const void*,sqlite3_uint64, void(*)(void*)); int (*bind_text64)(sqlite3_stmt*,int,const char*,sqlite3_uint64, void(*)(void*),unsigned char); - int (*cancel_auto_extension)(void(*)(void)); + int (*cancel_auto_extension)(void(*)(sqlite3*,char**,const void*)); int (*load_extension)(sqlite3*,const char*,const char*,char**); void *(*malloc64)(sqlite3_uint64); sqlite3_uint64 (*msize)(void*); @@ -286,6 +286,16 @@ struct sqlite3_api_routines { char *(*expanded_sql)(sqlite3_stmt*); }; +/* +** This is the function signature used for all extension entry points. It +** is also defined in the file "loadext.c". +*/ +typedef int (*sqlite3_loadext_entry)( + sqlite3 *db, /* Handle to the database. */ + char **pzErrMsg, /* Used to set error string on failure. */ + const sqlite3_api_routines *pThunk /* Extension API function pointers. */ +); + /* ** The following macros redefine the API routines so that they are ** redirected through the global sqlite3_api structure. diff --git a/src/tclsqlite.c b/src/tclsqlite.c index bc94a5ff7f..dd4e42e8a9 100644 --- a/src/tclsqlite.c +++ b/src/tclsqlite.c @@ -3806,7 +3806,12 @@ static void MD5DigestToBase10x8(unsigned char digest[16], char zDigest[50]){ ** A TCL command for md5. The argument is the text to be hashed. The ** Result is the hash in base64. */ -static int md5_cmd(void*cd, Tcl_Interp *interp, int argc, const char **argv){ +static int SQLITE_TCLAPI md5_cmd( + void*cd, + Tcl_Interp *interp, + int argc, + const char **argv +){ MD5Context ctx; unsigned char digest[16]; char zBuf[50]; @@ -3830,7 +3835,12 @@ static int md5_cmd(void*cd, Tcl_Interp *interp, int argc, const char **argv){ ** A TCL command to take the md5 hash of a file. The argument is the ** name of the file. */ -static int md5file_cmd(void*cd, Tcl_Interp*interp, int argc, const char **argv){ +static int SQLITE_TCLAPI md5file_cmd( + void*cd, + Tcl_Interp *interp, + int argc, + const char **argv +){ FILE *in; MD5Context ctx; void (*converter)(unsigned char*, char*); @@ -3910,7 +3920,11 @@ static void md5finalize(sqlite3_context *context){ MD5DigestToBase16(digest, zBuf); sqlite3_result_text(context, zBuf, -1, SQLITE_TRANSIENT); } -int Md5_Register(sqlite3 *db){ +int Md5_Register( + sqlite3 *db, + char **pzErrMsg, + const void *pThunk +){ int rc = sqlite3_create_function(db, "md5sum", -1, SQLITE_UTF8, 0, 0, md5step, md5finalize); sqlite3_overload_function(db, "md5sum", -1); /* To exercise this API */ diff --git a/src/test_autoext.c b/src/test_autoext.c index 94a3223e65..f962a51d6b 100644 --- a/src/test_autoext.c +++ b/src/test_autoext.c @@ -100,7 +100,7 @@ static int SQLITE_TCLAPI autoExtSqrObjCmd( int objc, Tcl_Obj *CONST objv[] ){ - int rc = sqlite3_auto_extension((void*)sqr_init); + int rc = sqlite3_auto_extension(sqr_init); Tcl_SetObjResult(interp, Tcl_NewIntObj(rc)); return SQLITE_OK; } @@ -116,7 +116,7 @@ static int SQLITE_TCLAPI cancelAutoExtSqrObjCmd( int objc, Tcl_Obj *CONST objv[] ){ - int rc = sqlite3_cancel_auto_extension((void*)sqr_init); + int rc = sqlite3_cancel_auto_extension(sqr_init); Tcl_SetObjResult(interp, Tcl_NewIntObj(rc)); return SQLITE_OK; } @@ -132,7 +132,7 @@ static int SQLITE_TCLAPI autoExtCubeObjCmd( int objc, Tcl_Obj *CONST objv[] ){ - int rc = sqlite3_auto_extension((void*)cube_init); + int rc = sqlite3_auto_extension(cube_init); Tcl_SetObjResult(interp, Tcl_NewIntObj(rc)); return SQLITE_OK; } @@ -148,7 +148,7 @@ static int SQLITE_TCLAPI cancelAutoExtCubeObjCmd( int objc, Tcl_Obj *CONST objv[] ){ - int rc = sqlite3_cancel_auto_extension((void*)cube_init); + int rc = sqlite3_cancel_auto_extension(cube_init); Tcl_SetObjResult(interp, Tcl_NewIntObj(rc)); return SQLITE_OK; } @@ -164,7 +164,7 @@ static int SQLITE_TCLAPI autoExtBrokenObjCmd( int objc, Tcl_Obj *CONST objv[] ){ - int rc = sqlite3_auto_extension((void*)broken_init); + int rc = sqlite3_auto_extension(broken_init); Tcl_SetObjResult(interp, Tcl_NewIntObj(rc)); return SQLITE_OK; } @@ -180,7 +180,7 @@ static int SQLITE_TCLAPI cancelAutoExtBrokenObjCmd( int objc, Tcl_Obj *CONST objv[] ){ - int rc = sqlite3_cancel_auto_extension((void*)broken_init); + int rc = sqlite3_cancel_auto_extension(broken_init); Tcl_SetObjResult(interp, Tcl_NewIntObj(rc)); return SQLITE_OK; } diff --git a/src/test_func.c b/src/test_func.c index 6a714ef3eb..fff1990128 100644 --- a/src/test_func.c +++ b/src/test_func.c @@ -644,7 +644,11 @@ static void test_setsubtype( sqlite3_result_subtype(context, (unsigned int)sqlite3_value_int(argv[1])); } -static int registerTestFunctions(sqlite3 *db){ +static int registerTestFunctions( + sqlite3 *db, + char **pzErrMsg, + const void *pThunk +){ static const struct { char *zName; signed char nArg; @@ -699,10 +703,10 @@ static int SQLITE_TCLAPI autoinstall_test_funcs( int objc, Tcl_Obj *CONST objv[] ){ - extern int Md5_Register(sqlite3*); - int rc = sqlite3_auto_extension((void*)registerTestFunctions); + extern int Md5_Register(sqlite3 *, char **, const void *); + int rc = sqlite3_auto_extension(registerTestFunctions); if( rc==SQLITE_OK ){ - rc = sqlite3_auto_extension((void*)Md5_Register); + rc = sqlite3_auto_extension(Md5_Register); } Tcl_SetObjResult(interp, Tcl_NewIntObj(rc)); return TCL_OK; @@ -799,13 +803,13 @@ int Sqlitetest_func_Init(Tcl_Interp *interp){ { "abuse_create_function", abuse_create_function }, }; int i; - extern int Md5_Register(sqlite3*); + extern int Md5_Register(sqlite3 *, char **, const void *); for(i=0; i Date: Thu, 28 Jul 2016 22:38:31 +0000 Subject: [PATCH 2/7] Make sure all the auto-extension mechanism function signatures match up precisely. FossilOrigin-Name: 87ba69b5ca4a8e4ef2bbaaf07a0ff13fc5cd4721 --- manifest | 16 ++++++++-------- manifest.uuid | 2 +- src/loadext.c | 4 ++-- src/sqlite.h.in | 5 +++-- src/sqlite3ext.h | 5 +++-- 5 files changed, 17 insertions(+), 15 deletions(-) diff --git a/manifest b/manifest index 36d529bb7a..0fd8b5e7cf 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Make\sthe\sextension\sauto-loading\smechanism\swork\swith\sthe\s__stdcall\scalling\sconvention.\s\sAlso,\sfix\sa\scouple\sTcl\scommand\scalling\sconventions\smissed\sin\sthe\sprevious\scheck-in. -D 2016-07-28T22:23:26.522 +C Make\ssure\sall\sthe\sauto-extension\smechanism\sfunction\ssignatures\smatch\sup\sprecisely. +D 2016-07-28T22:38:31.788 F Makefile.in 6c20d44f72d4564f11652b26291a214c8367e5db F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434 F Makefile.msc 3340e479e5221f06c3d61726f8f7efff885e4233 @@ -347,7 +347,7 @@ F src/hash.h ab34c5c54a9e9de2e790b24349ba5aab3dbb4fd4 F src/hwtime.h 747c1bbe9df21a92e9c50f3bbec1de841dc5e5da F src/insert.c 8f4e9fcbd8e95e85f15647ba8b413b18d556ec2b F src/legacy.c 75d3023be8f0d2b99d60f905090341a03358c58e -F src/loadext.c 4e26039f8d2e91acd57e55fcc31477aa37a3aa80 +F src/loadext.c 74a66e96c9b6beafbbc345d9045727e2bd7fd483 F src/main.c 16c1b2114eae8804caf3a8de8cb47bf2c6d83ad3 F src/malloc.c 1443d1ad95d67c21d77af7ae3f44678252f0efec F src/mem0.c 6a55ebe57c46ca1a7d98da93aaa07f99f1059645 @@ -385,9 +385,9 @@ F src/resolve.c cca3aa77b95706df5d635a2141a4d1de60ae6598 F src/rowset.c 7b7e7e479212e65b723bf40128c7b36dc5afdfac F src/select.c f3c6e9065fb34f6a23af27ec7f1f717ffbfc2ee4 F src/shell.c 9351fc6de11e1d908648c0a92d85627138e3dee5 -F src/sqlite.h.in 856ab22cfcec0ba94d2f0139a72a9797343687b3 +F src/sqlite.h.in acd078b5b18d7ceecd9f2bbffc30109a758a73b0 F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8 -F src/sqlite3ext.h 978c062d3fa59a22c6d57305b9f290e3a26110c3 +F src/sqlite3ext.h ebbcfcc6200d04f04b4e2252327b14c50cd9d49a F src/sqliteInt.h 14516943867eb2c30ce0e3670299958f59ade052 F src/sqliteLimit.h c0373387c287c8d0932510b5547ecde31b5da247 F src/status.c 5b18f9526900f61189ab0b83f1ef41d9f871a2ab @@ -1508,7 +1508,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P cbe1de4799df4d512bc175f51ed99c6ec6d5a4d1 -R bda25e48e90849454c6e864127930d74 +P 3ea567c4b07b2a7a027b9b5cb8250ab687803698 +R 51ed71c50a5a0dd10fef4650340d6be2 U mistachkin -Z 008c4b78efecf8010a475c91e6246b39 +Z 81fd56db162c30680657ddae99c1b31b diff --git a/manifest.uuid b/manifest.uuid index 0a08bdb4e1..428fb337c6 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -3ea567c4b07b2a7a027b9b5cb8250ab687803698 \ No newline at end of file +87ba69b5ca4a8e4ef2bbaaf07a0ff13fc5cd4721 \ No newline at end of file diff --git a/src/loadext.c b/src/loadext.c index 525272d7fe..c3d91eed33 100644 --- a/src/loadext.c +++ b/src/loadext.c @@ -676,7 +676,7 @@ static SQLITE_WSD struct sqlite3AutoExtList { ** loaded by every new database connection. */ int sqlite3_auto_extension( - void (*xInit)(sqlite3 *, char **, const void *) /* Extension entry point */ + void (*xInit)(sqlite3 *, char **, const sqlite3_api_routines *) ){ int rc = SQLITE_OK; #ifndef SQLITE_OMIT_AUTOINIT @@ -723,7 +723,7 @@ int sqlite3_auto_extension( ** was not on the list. */ int sqlite3_cancel_auto_extension( - void (*xInit)(sqlite3 *, char **, const void *) /* Extension entry point */ + void (*xInit)(sqlite3 *, char **, const sqlite3_api_routines *) ){ #if SQLITE_THREADSAFE sqlite3_mutex *mutex = sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_MASTER); diff --git a/src/sqlite.h.in b/src/sqlite.h.in index 104e465467..9fec987d8c 100644 --- a/src/sqlite.h.in +++ b/src/sqlite.h.in @@ -5707,8 +5707,9 @@ int sqlite3_enable_load_extension(sqlite3 *db, int onoff); ** See also: [sqlite3_reset_auto_extension()] ** and [sqlite3_cancel_auto_extension()] */ +typedef struct sqlite3_api_routines sqlite3_api_routines; int sqlite3_auto_extension( - void (*xEntryPoint)(sqlite3 *, char **, const void *) + void (*xEntryPoint)(sqlite3 *, char **, const sqlite3_api_routines *) ); /* @@ -5722,7 +5723,7 @@ int sqlite3_auto_extension( ** routines. */ int sqlite3_cancel_auto_extension( - void (*xEntryPoint)(sqlite3 *, char **, const void *) + void (*xEntryPoint)(sqlite3 *, char **, const sqlite3_api_routines *) ); /* diff --git a/src/sqlite3ext.h b/src/sqlite3ext.h index d79ca826de..8ee8e2d576 100644 --- a/src/sqlite3ext.h +++ b/src/sqlite3ext.h @@ -251,12 +251,13 @@ struct sqlite3_api_routines { char *(*vsnprintf)(int,char*,const char*,va_list); int (*wal_checkpoint_v2)(sqlite3*,const char*,int,int*,int*); /* Version 3.8.7 and later */ - int (*auto_extension)(void(*)(sqlite3*,char**,const void*)); + int (*auto_extension)(void(*)(sqlite3*,char**,const sqlite3_api_routines*)); int (*bind_blob64)(sqlite3_stmt*,int,const void*,sqlite3_uint64, void(*)(void*)); int (*bind_text64)(sqlite3_stmt*,int,const char*,sqlite3_uint64, void(*)(void*),unsigned char); - int (*cancel_auto_extension)(void(*)(sqlite3*,char**,const void*)); + int (*cancel_auto_extension)(void(*)(sqlite3*,char**, + const sqlite3_api_routines*)); int (*load_extension)(sqlite3*,const char*,const char*,char**); void *(*malloc64)(sqlite3_uint64); sqlite3_uint64 (*msize)(void*); From 78d5e02f99c1e555212da6e8699eead360cf314c Mon Sep 17 00:00:00 2001 From: mistachkin Date: Thu, 28 Jul 2016 22:46:53 +0000 Subject: [PATCH 3/7] The return type used by the auto-extension entry points is 'int', not 'void'. FossilOrigin-Name: bf9c86c74f30136a106f37603a6c7dcc76caf41d --- manifest | 16 ++++++++-------- manifest.uuid | 2 +- src/loadext.c | 4 ++-- src/sqlite.h.in | 4 ++-- src/sqlite3ext.h | 4 ++-- 5 files changed, 15 insertions(+), 15 deletions(-) diff --git a/manifest b/manifest index 0fd8b5e7cf..17a1dd2ca9 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Make\ssure\sall\sthe\sauto-extension\smechanism\sfunction\ssignatures\smatch\sup\sprecisely. -D 2016-07-28T22:38:31.788 +C The\sreturn\stype\sused\sby\sthe\sauto-extension\sentry\spoints\sis\s'int',\snot\s'void'. +D 2016-07-28T22:46:53.241 F Makefile.in 6c20d44f72d4564f11652b26291a214c8367e5db F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434 F Makefile.msc 3340e479e5221f06c3d61726f8f7efff885e4233 @@ -347,7 +347,7 @@ F src/hash.h ab34c5c54a9e9de2e790b24349ba5aab3dbb4fd4 F src/hwtime.h 747c1bbe9df21a92e9c50f3bbec1de841dc5e5da F src/insert.c 8f4e9fcbd8e95e85f15647ba8b413b18d556ec2b F src/legacy.c 75d3023be8f0d2b99d60f905090341a03358c58e -F src/loadext.c 74a66e96c9b6beafbbc345d9045727e2bd7fd483 +F src/loadext.c c3c2a37e4ce940d17c73971738754d412c79e09d F src/main.c 16c1b2114eae8804caf3a8de8cb47bf2c6d83ad3 F src/malloc.c 1443d1ad95d67c21d77af7ae3f44678252f0efec F src/mem0.c 6a55ebe57c46ca1a7d98da93aaa07f99f1059645 @@ -385,9 +385,9 @@ F src/resolve.c cca3aa77b95706df5d635a2141a4d1de60ae6598 F src/rowset.c 7b7e7e479212e65b723bf40128c7b36dc5afdfac F src/select.c f3c6e9065fb34f6a23af27ec7f1f717ffbfc2ee4 F src/shell.c 9351fc6de11e1d908648c0a92d85627138e3dee5 -F src/sqlite.h.in acd078b5b18d7ceecd9f2bbffc30109a758a73b0 +F src/sqlite.h.in cd10e4206b91c4bf03f121ab9209a14af0b48f14 F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8 -F src/sqlite3ext.h ebbcfcc6200d04f04b4e2252327b14c50cd9d49a +F src/sqlite3ext.h f4206565eb5f5cef9a1544d32a076b5f47af1bdc F src/sqliteInt.h 14516943867eb2c30ce0e3670299958f59ade052 F src/sqliteLimit.h c0373387c287c8d0932510b5547ecde31b5da247 F src/status.c 5b18f9526900f61189ab0b83f1ef41d9f871a2ab @@ -1508,7 +1508,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P 3ea567c4b07b2a7a027b9b5cb8250ab687803698 -R 51ed71c50a5a0dd10fef4650340d6be2 +P 87ba69b5ca4a8e4ef2bbaaf07a0ff13fc5cd4721 +R fe55b3414e54e3c3fe825e99e626bb4c U mistachkin -Z 81fd56db162c30680657ddae99c1b31b +Z 6282b6a783a4676d4515222e105ea01c diff --git a/manifest.uuid b/manifest.uuid index 428fb337c6..b5a2549c02 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -87ba69b5ca4a8e4ef2bbaaf07a0ff13fc5cd4721 \ No newline at end of file +bf9c86c74f30136a106f37603a6c7dcc76caf41d \ No newline at end of file diff --git a/src/loadext.c b/src/loadext.c index c3d91eed33..163141bf73 100644 --- a/src/loadext.c +++ b/src/loadext.c @@ -676,7 +676,7 @@ static SQLITE_WSD struct sqlite3AutoExtList { ** loaded by every new database connection. */ int sqlite3_auto_extension( - void (*xInit)(sqlite3 *, char **, const sqlite3_api_routines *) + int (*xInit)(sqlite3 *, char **, const sqlite3_api_routines *) ){ int rc = SQLITE_OK; #ifndef SQLITE_OMIT_AUTOINIT @@ -723,7 +723,7 @@ int sqlite3_auto_extension( ** was not on the list. */ int sqlite3_cancel_auto_extension( - void (*xInit)(sqlite3 *, char **, const sqlite3_api_routines *) + int (*xInit)(sqlite3 *, char **, const sqlite3_api_routines *) ){ #if SQLITE_THREADSAFE sqlite3_mutex *mutex = sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_MASTER); diff --git a/src/sqlite.h.in b/src/sqlite.h.in index 9fec987d8c..9d28cdc05a 100644 --- a/src/sqlite.h.in +++ b/src/sqlite.h.in @@ -5709,7 +5709,7 @@ int sqlite3_enable_load_extension(sqlite3 *db, int onoff); */ typedef struct sqlite3_api_routines sqlite3_api_routines; int sqlite3_auto_extension( - void (*xEntryPoint)(sqlite3 *, char **, const sqlite3_api_routines *) + int (*xEntryPoint)(sqlite3 *, char **, const sqlite3_api_routines *) ); /* @@ -5723,7 +5723,7 @@ int sqlite3_auto_extension( ** routines. */ int sqlite3_cancel_auto_extension( - void (*xEntryPoint)(sqlite3 *, char **, const sqlite3_api_routines *) + int (*xEntryPoint)(sqlite3 *, char **, const sqlite3_api_routines *) ); /* diff --git a/src/sqlite3ext.h b/src/sqlite3ext.h index 8ee8e2d576..689a5c4856 100644 --- a/src/sqlite3ext.h +++ b/src/sqlite3ext.h @@ -251,12 +251,12 @@ struct sqlite3_api_routines { char *(*vsnprintf)(int,char*,const char*,va_list); int (*wal_checkpoint_v2)(sqlite3*,const char*,int,int*,int*); /* Version 3.8.7 and later */ - int (*auto_extension)(void(*)(sqlite3*,char**,const sqlite3_api_routines*)); + int (*auto_extension)(int(*)(sqlite3*,char**,const sqlite3_api_routines*)); int (*bind_blob64)(sqlite3_stmt*,int,const void*,sqlite3_uint64, void(*)(void*)); int (*bind_text64)(sqlite3_stmt*,int,const char*,sqlite3_uint64, void(*)(void*),unsigned char); - int (*cancel_auto_extension)(void(*)(sqlite3*,char**, + int (*cancel_auto_extension)(int(*)(sqlite3*,char**, const sqlite3_api_routines*)); int (*load_extension)(sqlite3*,const char*,const char*,char**); void *(*malloc64)(sqlite3_uint64); From 85bd982ba02750aa927c2b80e5d7f888d58fb2fb Mon Sep 17 00:00:00 2001 From: mistachkin Date: Thu, 28 Jul 2016 22:53:10 +0000 Subject: [PATCH 4/7] More compiler warning fixes for GCC related to the auto-extension mechanism. FossilOrigin-Name: b8218129bc848c61fa6910feae4141dac6ad86fc --- manifest | 16 ++++++++-------- manifest.uuid | 2 +- src/tclsqlite.c | 2 +- src/test_func.c | 6 +++--- src/test_thread.c | 2 +- 5 files changed, 14 insertions(+), 14 deletions(-) diff --git a/manifest b/manifest index 17a1dd2ca9..07a36a9f51 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C The\sreturn\stype\sused\sby\sthe\sauto-extension\sentry\spoints\sis\s'int',\snot\s'void'. -D 2016-07-28T22:46:53.241 +C More\scompiler\swarning\sfixes\sfor\sGCC\srelated\sto\sthe\sauto-extension\smechanism. +D 2016-07-28T22:53:10.716 F Makefile.in 6c20d44f72d4564f11652b26291a214c8367e5db F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434 F Makefile.msc 3340e479e5221f06c3d61726f8f7efff885e4233 @@ -392,7 +392,7 @@ F src/sqliteInt.h 14516943867eb2c30ce0e3670299958f59ade052 F src/sqliteLimit.h c0373387c287c8d0932510b5547ecde31b5da247 F src/status.c 5b18f9526900f61189ab0b83f1ef41d9f871a2ab F src/table.c 5226df15ab9179b9ed558d89575ea0ce37b03fc9 -F src/tclsqlite.c 2ca362fa9c9762f705169aa5b2e75d688f4391f7 +F src/tclsqlite.c bdae822f21e229b6daced15938b6343ce44ef454 F src/test1.c 906a04b649c7139e943193a3905d583e325c30c7 F src/test2.c b7174313e993754303a8b33c43df7c44b46857ab F src/test3.c 1339a40be39650ae83894b6578f971dc7f96ea8a @@ -412,7 +412,7 @@ F src/test_config.c 4d3d4a886416f369771d69a6dba926866deda788 F src/test_demovfs.c a0c3bdd45ed044115c2c9f7779e56eafff18741e F src/test_devsym.c 4e58dec2602d8e139ca08659f62a62450587cb58 F src/test_fs.c ac62ce7d5c0c23aa6932891cad5746945564c91c -F src/test_func.c 7dceef0e0556933a751af9b73478519b6dc12f0f +F src/test_func.c 6f34b19ae097e3cf0b0fe5d6904cb9900e67f2ff F src/test_hexio.c 1d4469ca61ab202a1fcec6543f584d2407205e8d F src/test_init.c 4413c211a94b62157ca4c145b3f27c497f03c664 F src/test_intarray.c 988fc61cb0ff539f4172c0d95f15287c92516f64 @@ -435,7 +435,7 @@ F src/test_sqllog.c 0d138a8180a312bf996b37fa66da5c5799d4d57b F src/test_superlock.c 4839644b9201da822f181c5bc406c0b2385f672e F src/test_syscall.c 1073306ba2e9bfc886771871a13d3de281ed3939 F src/test_tclvar.c df9fe1213c2634687a9ca0b0bec0d2119d359ae3 -F src/test_thread.c a122592c2b857c79eb4ee4bacb62a5a6c8fe4c6f +F src/test_thread.c 89f0e47dac64e7ab15ca0a4fc87e0882c495ae21 F src/test_vfs.c f0186261a24de2671d080bcd8050732f0cb64f6e F src/test_vfstrace.c bab9594adc976cbe696ff3970728830b4c5ed698 F src/test_windirent.c 8f5fada630348558d5745b334702f301da1ffc61 @@ -1508,7 +1508,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P 87ba69b5ca4a8e4ef2bbaaf07a0ff13fc5cd4721 -R fe55b3414e54e3c3fe825e99e626bb4c +P bf9c86c74f30136a106f37603a6c7dcc76caf41d +R 664c66de93f8212f17433a2724631f1d U mistachkin -Z 6282b6a783a4676d4515222e105ea01c +Z 34c982f036e48065c3f321d45916961b diff --git a/manifest.uuid b/manifest.uuid index b5a2549c02..2806d535ae 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -bf9c86c74f30136a106f37603a6c7dcc76caf41d \ No newline at end of file +b8218129bc848c61fa6910feae4141dac6ad86fc \ No newline at end of file diff --git a/src/tclsqlite.c b/src/tclsqlite.c index dd4e42e8a9..3db4a32c4d 100644 --- a/src/tclsqlite.c +++ b/src/tclsqlite.c @@ -3923,7 +3923,7 @@ static void md5finalize(sqlite3_context *context){ int Md5_Register( sqlite3 *db, char **pzErrMsg, - const void *pThunk + const sqlite3_api_routines *pThunk ){ int rc = sqlite3_create_function(db, "md5sum", -1, SQLITE_UTF8, 0, 0, md5step, md5finalize); diff --git a/src/test_func.c b/src/test_func.c index fff1990128..6bfa862464 100644 --- a/src/test_func.c +++ b/src/test_func.c @@ -647,7 +647,7 @@ static void test_setsubtype( static int registerTestFunctions( sqlite3 *db, char **pzErrMsg, - const void *pThunk + const sqlite3_api_routines *pThunk ){ static const struct { char *zName; @@ -703,7 +703,7 @@ static int SQLITE_TCLAPI autoinstall_test_funcs( int objc, Tcl_Obj *CONST objv[] ){ - extern int Md5_Register(sqlite3 *, char **, const void *); + extern int Md5_Register(sqlite3 *, char **, const sqlite3_api_routines *); int rc = sqlite3_auto_extension(registerTestFunctions); if( rc==SQLITE_OK ){ rc = sqlite3_auto_extension(Md5_Register); @@ -803,7 +803,7 @@ int Sqlitetest_func_Init(Tcl_Interp *interp){ { "abuse_create_function", abuse_create_function }, }; int i; - extern int Md5_Register(sqlite3 *, char **, const void *); + extern int Md5_Register(sqlite3 *, char **, const sqlite3_api_routines *); for(i=0; i Date: Thu, 28 Jul 2016 23:54:45 +0000 Subject: [PATCH 5/7] Use the SQLITE_TCLAPI macro in several extensions that were missed in the previous check-in. FossilOrigin-Name: df2543652b835353c03956dfbd3e35e5b191372e --- ext/fts5/fts5_tcl.c | 20 ++++++++++---------- ext/rbu/test_rbu.c | 12 ++++++------ ext/session/test_session.c | 14 +++++++------- manifest | 16 ++++++++-------- manifest.uuid | 2 +- 5 files changed, 32 insertions(+), 32 deletions(-) diff --git a/ext/fts5/fts5_tcl.c b/ext/fts5/fts5_tcl.c index dee9bc7f18..9a7077b61d 100644 --- a/ext/fts5/fts5_tcl.c +++ b/ext/fts5/fts5_tcl.c @@ -82,7 +82,7 @@ static int f5tResultToErrorCode(const char *zRes){ return SQLITE_ERROR; } -static int f5tDbAndApi( +static int SQLITE_TCLAPI f5tDbAndApi( Tcl_Interp *interp, Tcl_Obj *pObj, sqlite3 **ppDb, @@ -213,7 +213,7 @@ static void xSetAuxdataDestructor(void *p){ ** ** Description... */ -static int xF5tApi( +static int SQLITE_TCLAPI xF5tApi( void * clientData, Tcl_Interp *interp, int objc, @@ -606,7 +606,7 @@ static void xF5tDestroy(void *pCtx){ ** ** Description... */ -static int f5tCreateFunction( +static int SQLITE_TCLAPI f5tCreateFunction( void * clientData, Tcl_Interp *interp, int objc, @@ -676,7 +676,7 @@ static int xTokenizeCb2( ** ** Description... */ -static int f5tTokenize( +static int SQLITE_TCLAPI f5tTokenize( void * clientData, Tcl_Interp *interp, int objc, @@ -882,7 +882,7 @@ static int f5tTokenizerTokenize( /* ** sqlite3_fts5_token ?-colocated? TEXT START END */ -static int f5tTokenizerReturn( +static int SQLITE_TCLAPI f5tTokenizerReturn( void * clientData, Tcl_Interp *interp, int objc, @@ -953,7 +953,7 @@ static void f5tDelTokenizer(void *pCtx){ ** SCRIPT2 should invoke the [sqlite3_fts5_token] command once for each ** token within the tokenized text. */ -static int f5tCreateTokenizer( +static int SQLITE_TCLAPI f5tCreateTokenizer( ClientData clientData, Tcl_Interp *interp, int objc, @@ -1005,7 +1005,7 @@ static void xF5tFree(ClientData clientData){ ** ** Set or clear the global "may-be-corrupt" flag. Return the old value. */ -static int f5tMayBeCorrupt( +static int SQLITE_TCLAPI f5tMayBeCorrupt( void * clientData, Tcl_Interp *interp, int objc, @@ -1037,7 +1037,7 @@ static unsigned int f5t_fts5HashKey(int nSlot, const char *p, int n){ return (h % nSlot); } -static int f5tTokenHash( +static int SQLITE_TCLAPI f5tTokenHash( void * clientData, Tcl_Interp *interp, int objc, @@ -1062,7 +1062,7 @@ static int f5tTokenHash( return TCL_OK; } -static int f5tRegisterMatchinfo( +static int SQLITE_TCLAPI f5tRegisterMatchinfo( void * clientData, Tcl_Interp *interp, int objc, @@ -1087,7 +1087,7 @@ static int f5tRegisterMatchinfo( return TCL_OK; } -static int f5tRegisterTok( +static int SQLITE_TCLAPI f5tRegisterTok( void * clientData, Tcl_Interp *interp, int objc, diff --git a/ext/rbu/test_rbu.c b/ext/rbu/test_rbu.c index 671f16c553..548954d7f1 100644 --- a/ext/rbu/test_rbu.c +++ b/ext/rbu/test_rbu.c @@ -53,7 +53,7 @@ void test_rbu_delta(sqlite3_context *pCtx, int nArg, sqlite3_value **apVal){ } -static int test_sqlite3rbu_cmd( +static int SQLITE_TCLAPI test_sqlite3rbu_cmd( ClientData clientData, Tcl_Interp *interp, int objc, @@ -196,7 +196,7 @@ static int test_sqlite3rbu_cmd( /* ** Tclcmd: sqlite3rbu CMD ?? */ -static int test_sqlite3rbu( +static int SQLITE_TCLAPI test_sqlite3rbu( ClientData clientData, Tcl_Interp *interp, int objc, @@ -226,7 +226,7 @@ static int test_sqlite3rbu( /* ** Tclcmd: sqlite3rbu_vacuum CMD */ -static int test_sqlite3rbu_vacuum( +static int SQLITE_TCLAPI test_sqlite3rbu_vacuum( ClientData clientData, Tcl_Interp *interp, int objc, @@ -254,7 +254,7 @@ static int test_sqlite3rbu_vacuum( /* ** Tclcmd: sqlite3rbu_create_vfs ?-default? NAME PARENT */ -static int test_sqlite3rbu_create_vfs( +static int SQLITE_TCLAPI test_sqlite3rbu_create_vfs( ClientData clientData, Tcl_Interp *interp, int objc, @@ -289,7 +289,7 @@ static int test_sqlite3rbu_create_vfs( /* ** Tclcmd: sqlite3rbu_destroy_vfs NAME */ -static int test_sqlite3rbu_destroy_vfs( +static int SQLITE_TCLAPI test_sqlite3rbu_destroy_vfs( ClientData clientData, Tcl_Interp *interp, int objc, @@ -310,7 +310,7 @@ static int test_sqlite3rbu_destroy_vfs( /* ** Tclcmd: sqlite3rbu_internal_test */ -static int test_sqlite3rbu_internal_test( +static int SQLITE_TCLAPI test_sqlite3rbu_internal_test( ClientData clientData, Tcl_Interp *interp, int objc, diff --git a/ext/session/test_session.c b/ext/session/test_session.c index 9f6bc3f70d..b273565455 100644 --- a/ext/session/test_session.c +++ b/ext/session/test_session.c @@ -111,7 +111,7 @@ static int testStreamOutput( ** $session patchset ** $session table_filter SCRIPT */ -static int test_session_cmd( +static int SQLITE_TCLAPI test_session_cmd( void *clientData, Tcl_Interp *interp, int objc, @@ -254,7 +254,7 @@ static void test_session_del(void *clientData){ /* ** Tclcmd: sqlite3session CMD DB-HANDLE DB-NAME */ -static int test_sqlite3session( +static int SQLITE_TCLAPI test_sqlite3session( void * clientData, Tcl_Interp *interp, int objc, @@ -610,7 +610,7 @@ static int testStreamInput( /* ** sqlite3changeset_apply DB CHANGESET CONFLICT-SCRIPT ?FILTER-SCRIPT? */ -static int test_sqlite3changeset_apply( +static int SQLITE_TCLAPI test_sqlite3changeset_apply( void * clientData, Tcl_Interp *interp, int objc, @@ -665,7 +665,7 @@ static int test_sqlite3changeset_apply( /* ** sqlite3changeset_apply_replace_all DB CHANGESET */ -static int test_sqlite3changeset_apply_replace_all( +static int SQLITE_TCLAPI test_sqlite3changeset_apply_replace_all( void * clientData, Tcl_Interp *interp, int objc, @@ -700,7 +700,7 @@ static int test_sqlite3changeset_apply_replace_all( /* ** sqlite3changeset_invert CHANGESET */ -static int test_sqlite3changeset_invert( +static int SQLITE_TCLAPI test_sqlite3changeset_invert( void * clientData, Tcl_Interp *interp, int objc, @@ -739,7 +739,7 @@ static int test_sqlite3changeset_invert( /* ** sqlite3changeset_concat LEFT RIGHT */ -static int test_sqlite3changeset_concat( +static int SQLITE_TCLAPI test_sqlite3changeset_concat( void * clientData, Tcl_Interp *interp, int objc, @@ -787,7 +787,7 @@ static int test_sqlite3changeset_concat( /* ** sqlite3session_foreach VARNAME CHANGESET SCRIPT */ -static int test_sqlite3session_foreach( +static int SQLITE_TCLAPI test_sqlite3session_foreach( void * clientData, Tcl_Interp *interp, int objc, diff --git a/manifest b/manifest index 07a36a9f51..4738abe8bf 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C More\scompiler\swarning\sfixes\sfor\sGCC\srelated\sto\sthe\sauto-extension\smechanism. -D 2016-07-28T22:53:10.716 +C Use\sthe\sSQLITE_TCLAPI\smacro\sin\sseveral\sextensions\sthat\swere\smissed\sin\sthe\sprevious\scheck-in. +D 2016-07-28T23:54:45.174 F Makefile.in 6c20d44f72d4564f11652b26291a214c8367e5db F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434 F Makefile.msc 3340e479e5221f06c3d61726f8f7efff885e4233 @@ -107,7 +107,7 @@ F ext/fts5/fts5_hash.c 880998e596b60f078348d48732ca4ad9a90caad2 F ext/fts5/fts5_index.c b429e23fabb57506f71e406997cc46b89190dc97 F ext/fts5/fts5_main.c f85281445dcf8be32d18841c93a6f90fe27dbfe2 F ext/fts5/fts5_storage.c de0ed8a06738bde433afe11e92295ceaffbc4e58 -F ext/fts5/fts5_tcl.c b41f04600936a2b910b5dff179e8bd050ccb34c7 +F ext/fts5/fts5_tcl.c caede54ed5eade83e1f455356e6dd2b849e1c703 F ext/fts5/fts5_test_mi.c 783b86697ebf773c18fc109992426c0173a055bc F ext/fts5/fts5_test_tok.c db08af63673c3a7d39f053b36fd6e065017706be F ext/fts5/fts5_tokenize.c 2ce7b44183538ec46b7907726262ee43ffdd39a8 @@ -255,7 +255,7 @@ F ext/rbu/rbuvacuum.test 4a977447c15c2581ab668781d9ef4294382530e0 F ext/rbu/rbuvacuum2.test 45009e127c3fb385e5c0fd5a8a63fb922a79d0ab F ext/rbu/sqlite3rbu.c 948677ee0ec57da51148e6c5f64ac68afcf36ab2 F ext/rbu/sqlite3rbu.h db8858120c9be14b60c9225f9da28221f5f6b945 -F ext/rbu/test_rbu.c c2c1859dfd69f1a55125d38009d0d49e36895780 +F ext/rbu/test_rbu.c fc84cd6aae50cfd8b2b2d5e9cdfc85e1925c303c F ext/rtree/README 6315c0d73ebf0ec40dedb5aa0e942bc8b54e3761 F ext/rtree/rtree.c d26a815b0df1c412a6881dae8d7fd3c9c08cce68 F ext/rtree/rtree.h 834dbcb82dc85b2481cde6a07cdadfddc99e9b9e @@ -301,7 +301,7 @@ F ext/session/sessionfault.test da273f2712b6411e85e71465a1733b8501dbf6f7 F ext/session/sessionfault2.test 04aa0bc9aa70ea43d8de82c4f648db4de1e990b0 F ext/session/sqlite3session.c 37485891b4add26cf61495df193c419f36556a32 F ext/session/sqlite3session.h 69bf73cfd71e58f2ae5d2aa935b2c1a541aee555 -F ext/session/test_session.c ebf9acf2bd70885e6245512427f800693b65dc9c +F ext/session/test_session.c 5f9b1da42c5771fbe5948acd816ae9e8ae781353 F ext/userauth/sqlite3userauth.h 19cb6f0e31316d0ee4afdfb7a85ef9da3333a220 F ext/userauth/user-auth.txt e6641021a9210364665fe625d067617d03f27b04 F ext/userauth/userauth.c 5fa3bdb492f481bbc1709fc83c91ebd13460c69e @@ -1508,7 +1508,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P bf9c86c74f30136a106f37603a6c7dcc76caf41d -R 664c66de93f8212f17433a2724631f1d +P b8218129bc848c61fa6910feae4141dac6ad86fc +R 66ac7539129e9f0d2a57c9cf5f4708c1 U mistachkin -Z 34c982f036e48065c3f321d45916961b +Z abcb763c1fb15cc18b4555018b76e16c diff --git a/manifest.uuid b/manifest.uuid index 2806d535ae..b5d59b835c 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -b8218129bc848c61fa6910feae4141dac6ad86fc \ No newline at end of file +df2543652b835353c03956dfbd3e35e5b191372e \ No newline at end of file From 2d45d7bfab45fc3488017f9573e2ccae423d5828 Mon Sep 17 00:00:00 2001 From: mistachkin Date: Thu, 28 Jul 2016 23:58:25 +0000 Subject: [PATCH 6/7] Missed a couple Tcl command deletion callbacks. FossilOrigin-Name: fc5c187602acceedf7152b6927616d134f779a8f --- ext/fts5/fts5_tcl.c | 4 ++-- ext/session/test_session.c | 2 +- manifest | 14 +++++++------- manifest.uuid | 2 +- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/ext/fts5/fts5_tcl.c b/ext/fts5/fts5_tcl.c index 9a7077b61d..77e4a6cf35 100644 --- a/ext/fts5/fts5_tcl.c +++ b/ext/fts5/fts5_tcl.c @@ -168,7 +168,7 @@ static int xTokenizeCb( return rc; } -static int xF5tApi(void*, Tcl_Interp*, int, Tcl_Obj *CONST []); +static int SQLITE_TCLAPI xF5tApi(void*, Tcl_Interp*, int, Tcl_Obj *CONST []); static int xQueryPhraseCb( const Fts5ExtensionApi *pApi, @@ -996,7 +996,7 @@ static int SQLITE_TCLAPI f5tCreateTokenizer( return TCL_OK; } -static void xF5tFree(ClientData clientData){ +static void SQLITE_TCLAPI xF5tFree(ClientData clientData){ ckfree(clientData); } diff --git a/ext/session/test_session.c b/ext/session/test_session.c index b273565455..df34d84445 100644 --- a/ext/session/test_session.c +++ b/ext/session/test_session.c @@ -244,7 +244,7 @@ static int SQLITE_TCLAPI test_session_cmd( return TCL_OK; } -static void test_session_del(void *clientData){ +static void SQLITE_TCLAPI test_session_del(void *clientData){ TestSession *p = (TestSession*)clientData; if( p->pFilterScript ) Tcl_DecrRefCount(p->pFilterScript); sqlite3session_delete(p->pSession); diff --git a/manifest b/manifest index 4738abe8bf..74d5fa504c 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Use\sthe\sSQLITE_TCLAPI\smacro\sin\sseveral\sextensions\sthat\swere\smissed\sin\sthe\sprevious\scheck-in. -D 2016-07-28T23:54:45.174 +C Missed\sa\scouple\sTcl\scommand\sdeletion\scallbacks. +D 2016-07-28T23:58:25.315 F Makefile.in 6c20d44f72d4564f11652b26291a214c8367e5db F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434 F Makefile.msc 3340e479e5221f06c3d61726f8f7efff885e4233 @@ -107,7 +107,7 @@ F ext/fts5/fts5_hash.c 880998e596b60f078348d48732ca4ad9a90caad2 F ext/fts5/fts5_index.c b429e23fabb57506f71e406997cc46b89190dc97 F ext/fts5/fts5_main.c f85281445dcf8be32d18841c93a6f90fe27dbfe2 F ext/fts5/fts5_storage.c de0ed8a06738bde433afe11e92295ceaffbc4e58 -F ext/fts5/fts5_tcl.c caede54ed5eade83e1f455356e6dd2b849e1c703 +F ext/fts5/fts5_tcl.c 6805005886d6d9c83bb9b68bb69d32af4b37797e F ext/fts5/fts5_test_mi.c 783b86697ebf773c18fc109992426c0173a055bc F ext/fts5/fts5_test_tok.c db08af63673c3a7d39f053b36fd6e065017706be F ext/fts5/fts5_tokenize.c 2ce7b44183538ec46b7907726262ee43ffdd39a8 @@ -301,7 +301,7 @@ F ext/session/sessionfault.test da273f2712b6411e85e71465a1733b8501dbf6f7 F ext/session/sessionfault2.test 04aa0bc9aa70ea43d8de82c4f648db4de1e990b0 F ext/session/sqlite3session.c 37485891b4add26cf61495df193c419f36556a32 F ext/session/sqlite3session.h 69bf73cfd71e58f2ae5d2aa935b2c1a541aee555 -F ext/session/test_session.c 5f9b1da42c5771fbe5948acd816ae9e8ae781353 +F ext/session/test_session.c d0754c65952cc7c729efd63374e3d61fbd1ae94c F ext/userauth/sqlite3userauth.h 19cb6f0e31316d0ee4afdfb7a85ef9da3333a220 F ext/userauth/user-auth.txt e6641021a9210364665fe625d067617d03f27b04 F ext/userauth/userauth.c 5fa3bdb492f481bbc1709fc83c91ebd13460c69e @@ -1508,7 +1508,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P b8218129bc848c61fa6910feae4141dac6ad86fc -R 66ac7539129e9f0d2a57c9cf5f4708c1 +P df2543652b835353c03956dfbd3e35e5b191372e +R 4f030271e7adab35739e0e6bab6a4279 U mistachkin -Z abcb763c1fb15cc18b4555018b76e16c +Z 7e68b7e2d6cc6fdfea65df6524031184 diff --git a/manifest.uuid b/manifest.uuid index b5d59b835c..ff4fc72f71 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -df2543652b835353c03956dfbd3e35e5b191372e \ No newline at end of file +fc5c187602acceedf7152b6927616d134f779a8f \ No newline at end of file From c08556844e97b3b1c3ee19eca99e6cc98ff537ac Mon Sep 17 00:00:00 2001 From: mistachkin Date: Fri, 29 Jul 2016 01:31:49 +0000 Subject: [PATCH 7/7] Add macro necessary for building several extensions when the __stdcall calling convention is not in use. FossilOrigin-Name: bc8c9b55ddf5227dc6b2116486f4a19bf54fce2b --- ext/fts5/fts5_tcl.c | 3 +++ ext/rbu/test_rbu.c | 3 +++ ext/session/test_session.c | 3 +++ manifest | 16 ++++++++-------- manifest.uuid | 2 +- 5 files changed, 18 insertions(+), 9 deletions(-) diff --git a/ext/fts5/fts5_tcl.c b/ext/fts5/fts5_tcl.c index 77e4a6cf35..5fe690f6b7 100644 --- a/ext/fts5/fts5_tcl.c +++ b/ext/fts5/fts5_tcl.c @@ -18,6 +18,9 @@ # include "sqlite_tcl.h" #else # include "tcl.h" +# ifndef SQLITE_TCLAPI +# define SQLITE_TCLAPI +# endif #endif #ifdef SQLITE_ENABLE_FTS5 diff --git a/ext/rbu/test_rbu.c b/ext/rbu/test_rbu.c index 548954d7f1..bc4c800331 100644 --- a/ext/rbu/test_rbu.c +++ b/ext/rbu/test_rbu.c @@ -21,6 +21,9 @@ # include "sqlite_tcl.h" #else # include "tcl.h" +# ifndef SQLITE_TCLAPI +# define SQLITE_TCLAPI +# endif #endif #include diff --git a/ext/session/test_session.c b/ext/session/test_session.c index df34d84445..103a1c2d7a 100644 --- a/ext/session/test_session.c +++ b/ext/session/test_session.c @@ -9,6 +9,9 @@ # include "sqlite_tcl.h" #else # include "tcl.h" +# ifndef SQLITE_TCLAPI +# define SQLITE_TCLAPI +# endif #endif typedef struct TestSession TestSession; diff --git a/manifest b/manifest index 74d5fa504c..3a567d4deb 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Missed\sa\scouple\sTcl\scommand\sdeletion\scallbacks. -D 2016-07-28T23:58:25.315 +C Add\smacro\snecessary\sfor\sbuilding\sseveral\sextensions\swhen\sthe\s__stdcall\scalling\sconvention\sis\snot\sin\suse. +D 2016-07-29T01:31:49.222 F Makefile.in 6c20d44f72d4564f11652b26291a214c8367e5db F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434 F Makefile.msc 3340e479e5221f06c3d61726f8f7efff885e4233 @@ -107,7 +107,7 @@ F ext/fts5/fts5_hash.c 880998e596b60f078348d48732ca4ad9a90caad2 F ext/fts5/fts5_index.c b429e23fabb57506f71e406997cc46b89190dc97 F ext/fts5/fts5_main.c f85281445dcf8be32d18841c93a6f90fe27dbfe2 F ext/fts5/fts5_storage.c de0ed8a06738bde433afe11e92295ceaffbc4e58 -F ext/fts5/fts5_tcl.c 6805005886d6d9c83bb9b68bb69d32af4b37797e +F ext/fts5/fts5_tcl.c 4a901f00c8553740dba63511603f5527d741c26a F ext/fts5/fts5_test_mi.c 783b86697ebf773c18fc109992426c0173a055bc F ext/fts5/fts5_test_tok.c db08af63673c3a7d39f053b36fd6e065017706be F ext/fts5/fts5_tokenize.c 2ce7b44183538ec46b7907726262ee43ffdd39a8 @@ -255,7 +255,7 @@ F ext/rbu/rbuvacuum.test 4a977447c15c2581ab668781d9ef4294382530e0 F ext/rbu/rbuvacuum2.test 45009e127c3fb385e5c0fd5a8a63fb922a79d0ab F ext/rbu/sqlite3rbu.c 948677ee0ec57da51148e6c5f64ac68afcf36ab2 F ext/rbu/sqlite3rbu.h db8858120c9be14b60c9225f9da28221f5f6b945 -F ext/rbu/test_rbu.c fc84cd6aae50cfd8b2b2d5e9cdfc85e1925c303c +F ext/rbu/test_rbu.c 1a6bbc6982e32485a48df111d0bb1934d537eabd F ext/rtree/README 6315c0d73ebf0ec40dedb5aa0e942bc8b54e3761 F ext/rtree/rtree.c d26a815b0df1c412a6881dae8d7fd3c9c08cce68 F ext/rtree/rtree.h 834dbcb82dc85b2481cde6a07cdadfddc99e9b9e @@ -301,7 +301,7 @@ F ext/session/sessionfault.test da273f2712b6411e85e71465a1733b8501dbf6f7 F ext/session/sessionfault2.test 04aa0bc9aa70ea43d8de82c4f648db4de1e990b0 F ext/session/sqlite3session.c 37485891b4add26cf61495df193c419f36556a32 F ext/session/sqlite3session.h 69bf73cfd71e58f2ae5d2aa935b2c1a541aee555 -F ext/session/test_session.c d0754c65952cc7c729efd63374e3d61fbd1ae94c +F ext/session/test_session.c 2caed9a659586428c63ca46e4900347b374487d4 F ext/userauth/sqlite3userauth.h 19cb6f0e31316d0ee4afdfb7a85ef9da3333a220 F ext/userauth/user-auth.txt e6641021a9210364665fe625d067617d03f27b04 F ext/userauth/userauth.c 5fa3bdb492f481bbc1709fc83c91ebd13460c69e @@ -1508,7 +1508,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P df2543652b835353c03956dfbd3e35e5b191372e -R 4f030271e7adab35739e0e6bab6a4279 +P fc5c187602acceedf7152b6927616d134f779a8f +R d16dc76cf59643dacfea9f5d3d7324b6 U mistachkin -Z 7e68b7e2d6cc6fdfea65df6524031184 +Z 029d2b66c80fad0a70d5e0c29c8d9e88 diff --git a/manifest.uuid b/manifest.uuid index ff4fc72f71..3703d2538c 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -fc5c187602acceedf7152b6927616d134f779a8f \ No newline at end of file +bc8c9b55ddf5227dc6b2116486f4a19bf54fce2b \ No newline at end of file