Index: SQLite.Interop/crypt.c ================================================================== --- SQLite.Interop/crypt.c +++ SQLite.Interop/crypt.c @@ -40,16 +40,13 @@ // most platforms static BOOL InitializeProvider() { if (g_hProvider) return TRUE; - if (!CryptAcquireContext(&g_hProvider, NULL, MS_ENHANCED_PROV, PROV_RSA_FULL, 0)) + if (!CryptAcquireContext(&g_hProvider, NULL, MS_ENHANCED_PROV, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT)) { - if(!CryptAcquireContext(&g_hProvider, NULL, MS_ENHANCED_PROV, PROV_RSA_FULL, CRYPT_NEWKEYSET)) - { - return FALSE; - } + return FALSE; } return TRUE; } // Create or update a cryptographic context for a pager. Index: SQLite.Interop/interop.c ================================================================== --- SQLite.Interop/interop.c +++ SQLite.Interop/interop.c @@ -1,22 +1,24 @@ #include "src/sqliteint.h" #include "src\os.h" #include #if NDEBUG + #if _WIN32_WCE #include "merge.h" -#else -#include "merge_full.h" -#endif // _WIN32_WCE -#endif // NDEBUG // IMPORTANT: This placeholder is here for a reason!!! // On the Compact Framework the .data section of the DLL must have its RawDataSize larger than the VirtualSize! // If its not, strong name validation will fail and other bad things will happen. DWORD _ph[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; +#else +#include "merge_full.h" +#endif // _WIN32_WCE +#endif // NDEBUG + #ifdef OS_WIN #include typedef void (WINAPI *SQLITEUSERFUNC)(void *, int, void **); Index: SQLite.Interop/merge.h ================================================================== --- SQLite.Interop/merge.h +++ SQLite.Interop/merge.h @@ -1,20 +1,19 @@ // This code was automatically generated from assembly -// C:\src\SQLite.NET\System.Data.SQLite\bin\CompactFramework\System.Data.SQLite.dll +// C:\Src\SQLite.NET\System.Data.SQLite\bin\CompactFramework\System.Data.SQLite.dll #include #pragma data_seg(".clr") #pragma comment(linker, "/SECTION:.clr,ER") - char __ph[118000] = {0}; // The number of bytes to reserve + char __ph[117996] = {0}; // The number of bytes to reserve #pragma data_seg() typedef BOOL (WINAPI *DLLMAIN)(HANDLE, DWORD, LPVOID); typedef struct EXTRA_STUFF { DWORD dwNativeEntryPoint; - DWORD dwReserved; } EXTRA_STUFF, *LPEXTRA_STUFF; __declspec(dllexport) BOOL WINAPI _CorDllMainStub(HANDLE hModule, DWORD dwReason, LPVOID pvReserved) { HANDLE hMod; Index: SQLite.Interop/merge_full.h ================================================================== --- SQLite.Interop/merge_full.h +++ SQLite.Interop/merge_full.h @@ -1,20 +1,19 @@ // This code was automatically generated from assembly -// C:\src\SQLite.NET\System.Data.SQLite\bin\System.Data.SQLite.dll +// C:\Src\SQLite.NET\System.Data.SQLite\bin\System.Data.SQLite.dll #include #pragma data_seg(".clr") #pragma comment(linker, "/SECTION:.clr,ER") - char __ph[127232] = {0}; // The number of bytes to reserve + char __ph[127248] = {0}; // The number of bytes to reserve #pragma data_seg() typedef BOOL (WINAPI *DLLMAIN)(HANDLE, DWORD, LPVOID); typedef struct EXTRA_STUFF { DWORD dwNativeEntryPoint; - DWORD dwReserved; } EXTRA_STUFF, *LPEXTRA_STUFF; __declspec(dllexport) BOOL WINAPI _CorDllMainStub(HANDLE hModule, DWORD dwReason, LPVOID pvReserved) { HANDLE hMod; Index: System.Data.SQLite/SQLiteEnlistment.cs ================================================================== --- System.Data.SQLite/SQLiteEnlistment.cs +++ System.Data.SQLite/SQLiteEnlistment.cs @@ -25,10 +25,19 @@ _scope = scope; _disposeConnection = false; _scope.EnlistVolatile(this, System.Transactions.EnlistmentOptions.None); } + + private void Cleanup(SQLiteConnection cnn) + { + if (_disposeConnection) + cnn.Dispose(); + + _transaction = null; + _scope = null; + } #region IEnlistmentNotification Members public void Commit(Enlistment enlistment) { @@ -43,15 +52,11 @@ enlistment.Done(); } finally { - if (_disposeConnection) - cnn.Dispose(); - - _transaction = null; - _scope = null; + Cleanup(cnn); } } public void InDoubt(Enlistment enlistment) { @@ -82,17 +87,13 @@ _transaction.Rollback(); enlistment.Done(); } finally { - if (_disposeConnection) - cnn.Dispose(); - - _transaction = null; - _scope = null; + Cleanup(cnn); } } #endregion } } #endif // !PLATFORM_COMPACT_FRAMEWORK Index: readme.htm ================================================================== --- readme.htm +++ readme.htm @@ -3,12 +3,12 @@ ADO.NET 2.0 SQLite Data Provider
- Version 1.0.35.1 September 12, 2006
- Using SQLite 3.3.7
+ Version 1.0.36.0 September 12, 2006
+ Using SQLite 3.3.8
Written by Robert Simpson (robert@blackcastlesoft.com)
Released to the public domain, use at your own risk!
Official provider website:  http://sqlite.phxsoftware.com

The latest version can be downloaded @@ -118,10 +118,16 @@ just one minor modification is made to pager.c, that modification is made automatically by the fixsource.vbs file when the VS2005 solution is compiled.

Version History

+

1.0.36.0 - October 14, 2006

+
    +
  • Fixed another bug retrieving data types when UseUtf16Encoding is true. Side-effect of further merging the common code between the two base classes.
  • Fixed a bug with System.Transactions whereby a connection closed during a transaction scope cannot be rolled back nor committed.
  • +
  • Implemented a workaround for a Compact Framework issue regarding strong-named + assemblies containing a PE section with a raw size less than the virtual size. 
  • +

1.0.35.1 - September 12, 2006

  • Fixed the TYPES keyword to work when UseUTF16Encoding is true.
  • Fix another bug revealed in 1.0.35.0 regarding infinite loops when the 2nd or subsequent statements of a semi-colon separated command cannot be parsed.
  • Updated the help documentation.