Make multiple attempts to delete files marked DELETE_ON_CLOSE under

WinCE.  Ticket #2950. (CVS 4802)

FossilOrigin-Name: 5bc8e564e3499ada01a6c3d74b1e6d6906d2a118
This commit is contained in:
drh 2008-02-20 00:00:00 +00:00
parent 7694574abd
commit d641d51171
3 changed files with 16 additions and 8 deletions

View File

@ -1,5 +1,5 @@
C Remove\sinstances\sof\sstrcpy()\sfrom\stest\scode.\sUse\smemcpy()\sor\nsqlite3_snprintf()\sinstead.\s(CVS\s4801)
D 2008-02-19T18:29:07
C Make\smultiple\sattempts\sto\sdelete\sfiles\smarked\sDELETE_ON_CLOSE\sunder\nWinCE.\s\sTicket\s#2950.\s(CVS\s4802)
D 2008-02-20T00:00:00
F Makefile.arm-wince-mingw32ce-gcc ac5f7b2cef0cd850d6f755ba6ee4ab961b1fadf7
F Makefile.in bc2b5df3e3d0d4b801b824b7ef6dec43812b049b
F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
@ -125,7 +125,7 @@ F src/os_test.c 49833426101f99aee4bb5f6a44b7c4b2029fda1c
F src/os_test.h 903c93554c23d88f34f667f1979e4a1cee792af3
F src/os_unix.c e4daef7628f690fa2b188af3632fb18f96525946
F src/os_unix.h 5768d56d28240d3fe4537fac08cc85e4fb52279e
F src/os_win.c c832d528ea774c7094d887749d71884984c9034c
F src/os_win.c aa3f4bbee3b8c182d25a33fbc319f486857c12c1
F src/os_win.h 41a946bea10f61c158ce8645e7646b29d44f122b
F src/pager.c caa7c06d6c98df0fc6e0e797ee9cef7420fb59fa
F src/pager.h 8174615ffd14ccc2cad2b081b919a398fa95e3f9
@ -621,7 +621,7 @@ F www/tclsqlite.tcl 8be95ee6dba05eabcd27a9d91331c803f2ce2130
F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0
F www/version3.tcl 890248cf7b70e60c383b0e84d77d5132b3ead42b
F www/whentouse.tcl fc46eae081251c3c181bd79c5faef8195d7991a5
P 68f5ddddf0d1b5c8ed97dda0a32362a55637b5f2
R 95dcd7a2db6ff273a951495091bfa925
P 7b50140dc0fb41a1b40c8709d96e214d98b06f81
R 9e4a40f76c1bf3608621dd453b2ad829
U drh
Z 94dde115ea93b6ad849adc1b17145e45
Z 92b5a213c6c415d6012472fd23b27c6c

View File

@ -1 +1 @@
7b50140dc0fb41a1b40c8709d96e214d98b06f81
5bc8e564e3499ada01a6c3d74b1e6d6906d2a118

View File

@ -606,9 +606,17 @@ static int winClose(sqlite3_file *id){
rc = CloseHandle(pFile->h);
}while( rc==0 && cnt++ < MX_CLOSE_ATTEMPT && (Sleep(100), 1) );
#if OS_WINCE
#define WINCE_DELETION_ATTEMPTS 3
winceDestroyLock(pFile);
if( pFile->zDeleteOnClose ){
DeleteFileW(pFile->zDeleteOnClose);
int cnt = 0;
while(
DeleteFileW(pFile->zDeleteOnClose)==0
&& GetFileAttributesW(pFile->zDeleteOnClose)!=0xffffffff
&& cnt++ < WINCE_DELETION_ATTEMPTS
){
Sleep(100); /* Wait a little before trying again */
}
free(pFile->zDeleteOnClose);
}
#endif