]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fix an important bug in the handling of EINTR in unixRead(). Never came
authordrh <drh@noemail.net>
Fri, 10 Feb 2012 03:10:27 +0000 (03:10 +0000)
committerdrh <drh@noemail.net>
Fri, 10 Feb 2012 03:10:27 +0000 (03:10 +0000)
up on x86 but crashes on sparc.

FossilOrigin-Name: 1a16db0bca717a2582a48332d81854ca90d6d49b

manifest
manifest.uuid
src/os_unix.c

index b2cc45f469397f04d0bf6cfaf610eb3489c9e037..6b465d4e872529e19e42aee22514096c8a45a8b9 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Fix\sa\sboundary\scase\sfor\sthe\sinteger\saffinity\sroutine\sfor\snon-x86\sprocessors.
-D 2012-02-10T01:25:13.282
+C Fix\san\simportant\sbug\sin\sthe\shandling\sof\sEINTR\sin\sunixRead().\s\sNever\scame\nup\son\sx86\sbut\scrashes\son\ssparc.
+D 2012-02-10T03:10:27.620
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in 3f79a373e57c3b92dabf76f40b065e719d31ac34
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -166,7 +166,7 @@ F src/os.c e1acdc09ff3ac2412945cca9766e2dcf4675f31c
 F src/os.h 59beba555b65a450bd1d804220532971d4299f60
 F src/os_common.h 92815ed65f805560b66166e3583470ff94478f04
 F src/os_os2.c 4a75888ba3dfc820ad5e8177025972d74d7f2440
-F src/os_unix.c 657672fab2580a84116c140b36ee3d6b6fc75b4e
+F src/os_unix.c d509b369ed376c77bc547961844a105d3907e4fa
 F src/os_win.c 5ac061ae1326a71500cee578ed0fd9113b4f6a37
 F src/pager.c 2d892f7b901a8867a33bc21742086165a3a99af8
 F src/pager.h a435da8421dc7844b7f9c7f37b636c160c50208a
@@ -989,7 +989,7 @@ F tool/tostr.awk e75472c2f98dd76e06b8c9c1367f4ab07e122d06
 F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
 F tool/warnings-clang.sh 9f406d66e750e8ac031c63a9ef3248aaa347ef2a
 F tool/warnings.sh fbc018d67fd7395f440c28f33ef0f94420226381
-P 16a471129d497f45935b5d00df7ce9ec731ee498
-R 6215b24575860936c7fbc53b2c141f64
+P bea05ddddf5089bac9b1aa9fe1d2cd24b069ad44
+R c0159fca8df351a2a43a5aba36c14e85
 U drh
-Z c3db51a3b8697db7ee0c8145390b81ef
+Z fadd9eaaad3a4f73aa794a26fa5c7111
index 8cae51c3729d29b1e1cfa66d9cb2adf1b0cbc381..45ce26092618e78db4de63829f399d39271338dc 100644 (file)
@@ -1 +1 @@
-bea05ddddf5089bac9b1aa9fe1d2cd24b069ad44
\ No newline at end of file
+1a16db0bca717a2582a48332d81854ca90d6d49b
\ No newline at end of file
index 13faac3a5e33e8c134af991d31a3320d7c8bd17d..5fad7aa2ce1b37e77a7a489a4762081c72c0c39d 100644 (file)
@@ -5413,7 +5413,7 @@ static int unixRandomness(sqlite3_vfs *NotUsed, int nBuf, char *zBuf){
   memset(zBuf, 0, nBuf);
 #if !defined(SQLITE_TEST)
   {
-    int pid, fd;
+    int pid, fd, got;
     fd = robust_open("/dev/urandom", O_RDONLY, 0);
     if( fd<0 ){
       time_t t;
@@ -5424,7 +5424,7 @@ static int unixRandomness(sqlite3_vfs *NotUsed, int nBuf, char *zBuf){
       assert( sizeof(t)+sizeof(pid)<=(size_t)nBuf );
       nBuf = sizeof(t) + sizeof(pid);
     }else{
-      do{ nBuf = osRead(fd, zBuf, nBuf); }while( nBuf<0 && errno==EINTR );
+      do{ got = osRead(fd, zBuf, nBuf); }while( got<0 && errno==EINTR );
       robust_close(0, fd, __LINE__);
     }
   }