-C Modify\sthe\sOS\slayer\sso\sthat\sI/O\sroutines\sare\scalled\sthrough\sa\svirtual\sfunction\ntable.\s\sThe\sos_test.c\smodule\shas\sbeen\sreplaced\sby\stest6.c.\s\sThe\scrash\stests\nare\sbusted\snow\sand\sneed\sto\sbe\sfixed.\s(CVS\s2785)
-D 2005-11-26T00:25:01
+C Add\san\sOS\smethod\sfor\smaking\scopies\sof\sfile\sdescriptors.\s\sThis\sfixes\sthe\ncrash\stests.\s(CVS\s2786)
+D 2005-11-26T03:43:23
F Makefile.in 28a2772cd9e03ba758c2a052813092cdb9da73bf
F Makefile.linux-gcc aee18d8a05546dcf1888bd4547e442008a49a092
F README 9c4e2d6706bdcc3efdd773ce752a8cdab4f90028
F src/legacy.c d58ea507bce885298a2c8c3cbb0f4bff5d47830b
F src/main.c 97bb830cdbd378d1f87469618471f52d9d263d09
F src/md5.c 7ae1c39044b95de2f62e066f47bb1deb880a1070
-F src/os.h 64564ddc5b70f8968d1df5039810a2e68cebe769
+F src/os.h 101564686bffe1825f7c66a712acb52e3ff3530d
F src/os_common.h d74a11728ad2444b6b695b94c28c06881f049e49
F src/os_test.c 49833426101f99aee4bb5f6a44b7c4b2029fda1c
F src/os_test.h 903c93554c23d88f34f667f1979e4a1cee792af3
-F src/os_unix.c 57f47fd9172991550b2af15b18d8cc9ccb90d307
+F src/os_unix.c 09f174975fe054ed73117ee17c5650f55773fbe3
F src/os_unix.h 5768d56d28240d3fe4537fac08cc85e4fb52279e
-F src/os_win.c 5d282b4fb2afdeefd0857357206510e72192302c
+F src/os_win.c a3762efcc6eebbf8a38d25ff80e0e510ec7afead
F src/os_win.h 41a946bea10f61c158ce8645e7646b29d44f122b
-F src/pager.c 561657a20ecbc5fa4c8e1fcfe019006553fd39a1
+F src/pager.c 8231fb8d947d5c524763de34174380684bb801d1
F src/pager.h e7b41ce8e7b5f629d456708b7ad9a8c8ede37140
F src/parse.y e4d57c2fd5cc02f19822ec41f6dc2bfc9bc85609
F src/pragma.c e278b3f722379ab9d630a1569ac05f586f01f4db
F src/test3.c f4e6a16a602091696619a1171bda25c0e3df49f7
F src/test4.c a8fd681e139e1c61f22a77d07fc3a99cb28fff3f
F src/test5.c 64f08b2a50ef371a1bd68ff206829e7b1b9997f5
-F src/test6.c d86ca78abd3c37149add00efc6538128e776714c
+F src/test6.c d8501501dbd257b88b3ecfa5c46d5e2ac230e0f9
F src/tokenize.c bdb79702217af49eba44c2a3b4f5fc7bd9ed2917
F src/trigger.c aea0283a3ef729a3e9c8dc5dc1a11c9fcc0a12a7
F src/update.c fec7665138ccf2a2133f11dcd24c1134c6b33526
F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0
F www/version3.tcl a99cf5f6d8bd4d5537584a2b342f0fb9fa601d8b
F www/whentouse.tcl 97e2b5cd296f7d8057e11f44427dea8a4c2db513
-P dba2cc0d0e0c648c1a4798bc72913e3b19acba6e
-R 0354953fb5e466e6ce44febcde77bb5c
+P 1f69aec285dd8e26bd739d5e44bb50fe03a9682a
+R 4253512b789e7bb7309536d870bf771b
U drh
-Z e7c0bd1253129b8abe29fc40e7e0d238
+Z 5555b9dd495cd99105a3717d675a6704
** file simultaneously, or one process from reading the database while
** another is writing.
**
-** @(#) $Id: pager.c,v 1.218 2005/11/26 00:25:03 drh Exp $
+** @(#) $Id: pager.c,v 1.219 2005/11/26 03:43:23 drh Exp $
*/
#ifndef SQLITE_OMIT_DISKIO
#include "sqliteInt.h"
strcpy(pPager->zJournal, zFullPathname);
sqliteFree(zFullPathname);
strcpy(&pPager->zJournal[nameLen], "-journal");
- pPager->fd = fd;
+ sqlite3Io.xCopyOsFile(&pPager->fd,&fd);
pPager->journalOpen = 0;
pPager->useJournal = useJournal && !memDb;
pPager->noReadlock = noReadlock && readOnly;
return origIo.xOpenReadOnly(zFilename, id);
}
+/*
+** Make a copy of an OsFile object
+*/
+static void crashCopyOsFile(OsFile *pDest, OsFile *pSrc){
+ *pDest = *pSrc;
+ ((OsTestFile*)(pDest->pAux))->pBase = pDest;
+}
+
/*
** tclcmd: sqlite_crashparams DELAY CRASHFILE
**
sqlite3Io.xOpenReadWrite = crashOpenReadWrite;
sqlite3Io.xOpenExclusive = crashOpenExclusive;
sqlite3Io.xOpenReadOnly = crashOpenReadOnly;
+ sqlite3Io.xCopyOsFile = crashCopyOsFile;
return TCL_OK;
}