Make sure the multiplexor shim uses a full pathname for temp file that it

creates.

FossilOrigin-Name: 186d7ff1d9804d508e472e4939608bf2be67bdc2
This commit is contained in:
drh 2011-05-18 03:02:10 +00:00
parent c83f2d477c
commit 4aef70174b
3 changed files with 13 additions and 8 deletions

View File

@ -1,5 +1,5 @@
C Remove\sunreachable\sbranches\sfrom\sthe\s8.3\sfilename\slogic. C Make\ssure\sthe\smultiplexor\sshim\suses\sa\sfull\spathname\sfor\stemp\sfile\sthat\sit\ncreates.
D 2011-05-18T02:41:10.584 D 2011-05-18T03:02:10.059
F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
F Makefile.in 11dcc00a8d0e5202def00e81732784fb0cc4fe1d F Makefile.in 11dcc00a8d0e5202def00e81732784fb0cc4fe1d
F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@ -211,7 +211,7 @@ F src/test_intarray.h 489edb9068bb926583445cb02589344961054207
F src/test_journal.c 785edd54f963aefb3c1628124170a56697c68c70 F src/test_journal.c 785edd54f963aefb3c1628124170a56697c68c70
F src/test_loadext.c df586c27176e3c2cb2e099c78da67bf14379a56e F src/test_loadext.c df586c27176e3c2cb2e099c78da67bf14379a56e
F src/test_malloc.c 7ca7be34e0e09ef0ed6619544552ed95732e41f6 F src/test_malloc.c 7ca7be34e0e09ef0ed6619544552ed95732e41f6
F src/test_multiplex.c c71f0a0cdf2b89a441e0bcefb2fcdf1dd358a820 F src/test_multiplex.c 8e67617b80b532315293761970589581745a52a0
F src/test_multiplex.h e99c571bc4968b7a9363b661481f3934bfead61d F src/test_multiplex.h e99c571bc4968b7a9363b661481f3934bfead61d
F src/test_mutex.c a6bd7b9cf6e19d989e31392b06ac8d189f0d573e F src/test_mutex.c a6bd7b9cf6e19d989e31392b06ac8d189f0d573e
F src/test_onefile.c 40cf9e212a377a6511469384a64b01e6e34b2eec F src/test_onefile.c 40cf9e212a377a6511469384a64b01e6e34b2eec
@ -937,7 +937,7 @@ F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
F tool/split-sqlite3c.tcl d9be87f1c340285a3e081eb19b4a247981ed290c F tool/split-sqlite3c.tcl d9be87f1c340285a3e081eb19b4a247981ed290c
F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
P a074986045f1a81fb831ffee4a29af13c978b053 P 4f7e7b44f2d17681318a1fd22466d3cc03103fc4
R b1e893cccba0a3222ced9d709bda7393 R d6d83dacd40319cfb494e08bc967aebf
U drh U drh
Z 511f68817ff94b8f1f3a0e7f5adbf2b3 Z e159c1e62c6ced1398d519693948ac08

View File

@ -1 +1 @@
4f7e7b44f2d17681318a1fd22466d3cc03103fc4 186d7ff1d9804d508e472e4939608bf2be67bdc2

View File

@ -218,14 +218,19 @@ static int multiplexGetTempname(sqlite3_vfs *pOrigVfs, int nBuf, char *zBuf){
** pVfs->mxPathname characters. ** pVfs->mxPathname characters.
*/ */
if( pOrigVfs->mxPathname <= nBuf ){ if( pOrigVfs->mxPathname <= nBuf ){
char *zTmp = sqlite3_malloc(pOrigVfs->mxPathname);
if( zTmp==0 ) return SQLITE_NOMEM;
/* sqlite3_temp_directory should always be less than /* sqlite3_temp_directory should always be less than
** pVfs->mxPathname characters. ** pVfs->mxPathname characters.
*/ */
sqlite3_snprintf(pOrigVfs->mxPathname, sqlite3_snprintf(pOrigVfs->mxPathname,
zBuf, zTmp,
"%s/", "%s/",
sqlite3_temp_directory ? sqlite3_temp_directory : "."); sqlite3_temp_directory ? sqlite3_temp_directory : ".");
rc = pOrigVfs->xFullPathname(pOrigVfs, zTmp, nBuf, zBuf);
sqlite3_free(zTmp);
if( rc ) return rc;
/* Check that the output buffer is large enough for the temporary file /* Check that the output buffer is large enough for the temporary file
** name. ** name.