]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fix a memory leak in the fileio extension on windows. Other changes to
authordrh <>
Fri, 19 Dec 2025 23:47:07 +0000 (23:47 +0000)
committerdrh <>
Fri, 19 Dec 2025 23:47:07 +0000 (23:47 +0000)
makefiles and similar to get zipfile testing working on Windows.

FossilOrigin-Name: 121b327f1f3941a9a44ab2d98e60f6e25b928ca9b54bbaa109239ba9012b3c3c

Makefile.msc
ext/misc/fileio.c
manifest
manifest.uuid
src/shell.c.in
test/zipfile.test

index 3c075fac3205c67d42f97eaec0dd4f6ff4bcb9a0..52807ff7f27677992812be703e6afff5f2c1da79 100644 (file)
@@ -805,17 +805,21 @@ BCC = $(BCC) /d2guard4 -D_ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE
 !IF $(DEBUG)>1
 TCC = $(TCC) -MDd
 BCC = $(BCC) -MDd
+ZLIBCFLAGS = -nologo -MDd -W3 -O2 -Oy- -Zi
 !ELSE
 TCC = $(TCC) -MD
 BCC = $(BCC) -MD
+ZLIBCFLAGS = -nologo -MD -W3 -O2 -Oy- -Zi
 !ENDIF
 !ELSE
 !IF $(DEBUG)>1
 TCC = $(TCC) -MTd
 BCC = $(BCC) -MTd
+ZLIBCFLAGS = -nologo -MTd -W3 -O2 -Oy- -Zi
 !ELSE
 TCC = $(TCC) -MT
 BCC = $(BCC) -MT
+ZLIBCFLAGS = -nologo -MT -W3 -O2 -Oy- -Zi
 !ENDIF
 !ENDIF
 
@@ -2416,7 +2420,7 @@ shell.c:  $(SHELL_DEP) $(TOP)\tool\mkshellc.tcl $(JIM_TCLSH)
        $(JIM_TCLSH) $(TOP)\tool\mkshellc.tcl shell.c
 
 zlib:
-       pushd $(ZLIBDIR) && $(MAKE) /f win32\Makefile.msc clean $(ZLIBLIB) && popd
+       pushd $(ZLIBDIR) && $(MAKE) /f win32\Makefile.msc clean $(ZLIBLIB) CFLAGS="$(ZLIBCFLAGS)" && popd
 
 # Rules to build the extension objects.
 #
@@ -2811,6 +2815,134 @@ tcl-env:
        @echo JIM_TCLSH = $(JIM_TCLSH)
        @echo VISUALSTUDIOVERSION = $(VISUALSTUDIOVERSION)
 
+env:
+       @echo ALL_TCL_TARGETS = $(ALL_TCL_TARGETS)
+       @echo API_ARMOR = $(API_ARMOR)
+       @echo ASAN = $(ASAN)
+       @echo BCC = $(BCC)
+       @echo BUILD_ZLIB = $(BUILD_ZLIB)
+       @echo CC = $(CC)
+       @echo CCOPTS = $(CCOPTS)
+       @echo CHECKER_DEPS = $(CHECKER_DEPS)
+       @echo CORE_CCONV_OPTS = $(CORE_CCONV_OPTS)
+       @echo CORE_COMPILE_OPTS = $(CORE_COMPILE_OPTS)
+       @echo CORE_LINK_DEP = $(CORE_LINK_DEP)
+       @echo CORE_LINK_OPTS = $(CORE_LINK_OPTS)
+       @echo CRTLIBPATH = $(CRTLIBPATH)
+       @echo CSC = $(CSC)
+       @echo DBFUZZ_COMPILE_OPTS = $(DBFUZZ_COMPILE_OPTS)
+       @echo DEBUG = $(DEBUG)
+       @echo DYNAMIC_SHELL = $(DYNAMIC_SHELL)
+       @echo EXT_FEATURE_FLAGS = $(EXT_FEATURE_FLAGS)
+       @echo EXTHDR = $(EXTHDR)
+       @echo EXTRA_SRC = $(EXTRA_SRC)
+       @echo FOR_UWP = $(FOR_UWP)
+       @echo FUZZCHECK_OPTS = $(FUZZCHECK_OPTS)
+       @echo FUZZCHECK_SRC = $(FUZZCHECK_SRC)
+       @echo FUZZDATA = $(FUZZDATA)
+       @echo FUZZERSHELL_COMPILE_OPTS = $(FUZZERSHELL_COMPILE_OPTS)
+       @echo HDR = $(HDR)
+       @echo ICUDIR = $(ICUDIR)
+       @echo ICUINCDIR = $(ICUINCDIR)
+       @echo ICULIBDIR = $(ICULIBDIR)
+       @echo JIM_TCLSH = $(JIM_TCLSH)
+       @echo KV_COMPILE_OPTS = $(KV_COMPILE_OPTS)
+       @echo LDFLAGS = $(LDFLAGS)
+       @echo LD = $(LD)
+       @echo LIBICU = $(LIBICU)
+       @echo LIBOBJ = $(LIBOBJ)
+       @echo LIBREADLINE = $(LIBREADLINE)
+       @echo LIBRESOBJS = $(LIBRESOBJS)
+       @echo LIBTCLPATH = $(LIBTCLPATH)
+       @echo LIBTCLSTUB = $(LIBTCLSTUB)
+       @echo LIBTCL = $(LIBTCL)
+       @echo LTCOMPILE = $(LTCOMPILE)
+       @echo LTLIB = $(LTLIB)
+       @echo LTLIBOPTS = $(LTLIBOPTS)
+       @echo LTLIBPATHS = $(LTLIBPATHS)
+       @echo LTLIBS = $(LTLIBS)
+       @echo LTLINK = $(LTLINK)
+       @echo LTLINKOPTS = $(LTLINKOPTS)
+       @echo LTRCOMPILE = $(LTRCOMPILE)
+       @echo MEMDEBUG = $(MEMDEBUG)
+       @echo MINIMAL_AMALGAMATION = $(MINIMAL_AMALGAMATION)
+       @echo MPTESTER_COMPILE_OPTS = $(MPTESTER_COMPILE_OPTS)
+       @echo NCC = $(NCC)
+       @echo NCRTLIBPATH = $(NCRTLIBPATH)
+       @echo NLTLIBPATHS = $(NLTLIBPATHS)
+       @echo NO_LINEMACROS = $(NO_LINEMACROS)
+       @echo NO_TCL = $(NO_TCL)
+       @echo NO_WARN = $(NO_WARN)
+       @echo NSDKLIBPATH = $(NSDKLIBPATH)
+       @echo NUCRTLIBPATH = $(NUCRTLIBPATH)
+       @echo OPT_FEATURE_FLAGS = $(OPT_FEATURE_FLAGS)
+       @echo OPTIMIZATIONS = $(OPTIMIZATIONS)
+       @echo OSSSHELL_SRC = $(OSSSHELL_SRC)
+       @echo OSTRACE = $(OSTRACE)
+       @echo RBU = $(RBU)
+       @echo RCC = $(RCC)
+       @echo RC = $(RC)
+       @echo READLINE_FLAGS = $(READLINE_FLAGS)
+       @echo REQ_FEATURE_FLAGS = $(REQ_FEATURE_FLAGS)
+       @echo RSYNC_OPT = $(RSYNC_OPT)
+       @echo RSYNC_SRC = $(RSYNC_SRC)
+       @echo SESSION = $(SESSION)
+       @echo SETLK_TIMEOUT = $(SETLK_TIMEOUT)
+       @echo SHELL_CCONV_OPTS = $(SHELL_CCONV_OPTS)
+       @echo SHELL_COMPILE_OPTS = $(SHELL_COMPILE_OPTS)
+       @echo SHELL_CORE_DEP = $(SHELL_CORE_DEP)
+       @echo SHELL_CORE_LIB = $(SHELL_CORE_LIB)
+       @echo SHELL_CORE_SRC = $(SHELL_CORE_SRC)
+       @echo SHELL_DEP = $(SHELL_DEP)
+       @echo SHELL_LINK_OPTS = $(SHELL_LINK_OPTS)
+       @echo SPLIT_AMALGAMATION = $(SPLIT_AMALGAMATION)
+       @echo SQLITETCLDECLSH = $(SQLITETCLDECLSH)
+       @echo SQLITE_TCL_DEP = $(SQLITE_TCL_DEP)
+       @echo SQLITETCLH = $(SQLITETCLH)
+       @echo SRC = $(SRC)
+       @echo STATICALLY_LINK_TCL = $(STATICALLY_LINK_TCL)
+       @echo ST_COMPILE_OPTS = $(ST_COMPILE_OPTS)
+       @echo STORELIBPATH = $(STORELIBPATH)
+       @echo SYMBOLS = $(SYMBOLS)
+       @echo TCC = $(TCC)
+       @echo TCLDIR = $(TCLDIR)
+       @echo TCLINCDIR = $(TCLINCDIR)
+       @echo TCLLIBDIR = $(TCLLIBDIR)
+       @echo TCLLIBPATHS = $(TCLLIBPATHS)
+       @echo TCLLIBS = $(TCLLIBS)
+       @echo TCLSH_CMD = $(TCLSH_CMD)
+       @echo TCLSQLITEEX = $(TCLSQLITEEX)
+       @echo TCLSUFFIX = $(TCLSUFFIX)
+       @echo TCLVERSION = $(TCLVERSION)
+       @echo TEST_CCONV_OPTS = $(TEST_CCONV_OPTS)
+       @echo TESTEXT = $(TESTEXT)
+       @echo TESTFIXTURE_DEP = $(TESTFIXTURE_DEP)
+       @echo TESTFIXTURE_FLAGS = $(TESTFIXTURE_FLAGS)
+       @echo TESTFIXTURE_SRC = $(TESTFIXTURE_SRC)
+       @echo TESTOPTS = $(TESTOPTS)
+       @echo TESTPROGS = $(TESTPROGS)
+       @echo TESTSRC = $(TESTSRC)
+       @echo TLIBS = $(TLIBS)
+       @echo TOP = $(TOP)
+       @echo UCRTLIBPATH = $(UCRTLIBPATH)
+       @echo USE_AMALGAMATION = $(USE_AMALGAMATION)
+       @echo USE_CRT_DLL = $(USE_CRT_DLL)
+       @echo USE_FATAL_WARN = $(USE_FATAL_WARN)
+       @echo USE_FULLWARN = $(USE_FULLWARN)
+       @echo USE_ICU = $(USE_ICU)
+       @echo USE_LISTINGS = $(USE_LISTINGS)
+       @echo USE_NATIVE_LIBPATHS = $(USE_NATIVE_LIBPATHS)
+       @echo USE_RC = $(USE_RC)
+       @echo USE_RUNTIME_CHECKS = $(USE_RUNTIME_CHECKS)
+       @echo USE_SEH = $(USE_SEH)
+       @echo USE_STDCALL = $(USE_STDCALL)
+       @echo USE_ZLIB = $(USE_ZLIB)
+       @echo XCOMPILE = $(XCOMPILE)
+       @echo ZLIBDIR = $(ZLIBDIR)
+       @echo ZLIBINCDIR = $(ZLIBINCDIR)
+       @echo ZLIBLIBDIR = $(ZLIBLIBDIR)
+       @echo ZLIBLIB = $(ZLIBLIB)
+
 moreclean:     clean
        del /Q $(SQLITE3C) $(SQLITE3H) 2>NUL
 # <</mark>>
index d78b148779f1628309345fcdced671ebf19616d5..6cc2ae008537cf24153c37ae6893488cd2185b9a 100644 (file)
@@ -329,6 +329,7 @@ static int fileStat(
   b1[sz] = 0;
   rc = _wstat(b1, pStatBuf);
   if( rc==0 ) statTimesToUtc(zPath, pStatBuf);
+  sqlite3_free(b1);
   return rc;
 #else
   return stat(zPath, pStatBuf);
index f02a49b96f80682336c4bc4afa32c6f51b89dcbb..6f0e5eae9a5ee8bbe911a353ba44e504f7d32a77 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,12 +1,12 @@
-C Enhance\sthe\sunixIsSharingShmNode()\scode\s(check-in\s[6385a1962c69c69c])\sto\savoid\npossible\sdeadlocks\swith\sthreads\sin\sfindResuableFd().
-D 2025-12-15T14:56:57.780
+C Fix\sa\smemory\sleak\sin\sthe\sfileio\sextension\son\swindows.\s\sOther\schanges\sto\nmakefiles\sand\ssimilar\sto\sget\szipfile\stesting\sworking\son\sWindows.
+D 2025-12-19T23:47:07.922
 F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md 6bc480fc673fb4acbc4094e77edb326267dd460162d7723c7f30bee2d3d9e97d
 F Makefile.in 3ce07126d7e87c7464301482e161fdae6a51d0a2aa06b200b8f0000ef4d6163b
 F Makefile.linux-generic bd3e3cacd369821a6241d4ea1967395c962dfe3057e38cb0a435cee0e8b789d0
-F Makefile.msc 8dd676302f3165984c046f81af14b6676a334418fa30255efaf439f8033042fa
+F Makefile.msc d4459fad28b388063698cbb7a73bfce8684da998a844a04b21d4b9b10291196a
 F README.md dae499194b75deed76a13a4a83c82493f2530331882d7dfe5754d63287d3f8f7
 F VERSION 53fb08d314af314f884da9b33cabad229928aac28b53984a2c38fd4d7dc608ab
 F art/icon-243x273.gif 9750b734f82fdb3dc43127753d5e6fbf3b62c9f4e136c2fbf573b2f57ea87af5
@@ -372,7 +372,7 @@ F ext/misc/dbdump.c 678f1b9ae2317b4473f65d03132a2482c3f4b08920799ed80feedd2941a0
 F ext/misc/decimal.c d4883de142f6dcd36eda23da40b55e2b51374e7b01eb54a7173940191389fc5e
 F ext/misc/eval.c 04bc9aada78c888394204b4ed996ab834b99726fb59603b0ee3ed6e049755dc1
 F ext/misc/explain.c 606100185fb90d6a1eade1ed0414d53503c86820d8956a06e3b0a56291894f2b
-F ext/misc/fileio.c d4918ff3f59a26c447347b40ac5e5c41aef697dfa24ebb2ef61ebad3c32261f0
+F ext/misc/fileio.c d80268a5328fe839062a9d3103ea0fc7cacc6d42605959275675cb37867c84f7
 F ext/misc/fossildelta.c 2fc2dd4f34f478df674887db62586b1071c4cd3c9e73ee40f9ee669670e482d1
 F ext/misc/fuzzer.c 6b231352815304ba60d8e9ec2ee73d4918e74d9b76bda8940ba2b64e8777515e
 F ext/misc/ieee754.c 176c061c94857b543313959289cb60cf777c999fd002f82b53d194b95e9f347a
@@ -736,7 +736,7 @@ F src/random.c 606b00941a1d7dd09c381d3279a058d771f406c5213c9932bbd93d5587be4b9c
 F src/resolve.c 5616fbcf3b833c7c705b24371828215ad0925d0c0073216c4f153348d5753f0a
 F src/rowset.c 8432130e6c344b3401a8874c3cb49fefe6873fec593294de077afea2dce5ec97
 F src/select.c 016cb24f1d576b919ee4ba53b21ba1a9976bd5837371b83ca73da82003063633
-F src/shell.c.in 223e3703657f5e66c136521a32fc8cc9a7dbbe6b1ade6fd47457e78c38f33e6e
+F src/shell.c.in 2c7e751795f38bb1855c35b556419cab5b8ba22e0f6758f5a629338065d6b79f
 F src/sqlite.h.in c0979f9ac1f5be887397dd2a0bb485636893a81b34d64df85123aae9650c42f2
 F src/sqlite3.rc 015537e6ac1eec6c7050e17b616c2ffe6f70fca241835a84a4f0d5937383c479
 F src/sqlite3ext.h 7f236ca1b175ffe03316d974ef57df79b3938466c28d2f95caef5e08c57f3a52
@@ -2078,7 +2078,7 @@ F test/writecrash.test 13520af28f376bfc8c0bcd130efc1fff20bb165198e8b94cf153f1f75
 F test/zeroblob.test 7b74cefc7b281dfa2b07cd237987fbe94b4a2037a7771e9e83f2d5f608b1d99e
 F test/zeroblobfault.test 861d8191a0d944dfebb3cb4d2c5b4e46a5a119eaec5a63dd996c2389f8063441
 F test/zerodamage.test 9c41628db7e8d9e8a0181e59ea5f189df311a9f6ce99cc376dc461f66db6f8dc
-F test/zipfile.test 82d402903199d193073af2c3c56b3c6839d229160fdc9ba437fa959db8da3ecc
+F test/zipfile.test ca3fb01d900c06efd7cf61b709576b714eeb249cbc7cae30af303536f1b4e91e
 F test/zipfile2.test a577e0775e32ef8972e7d5e9a45bc071a5ae061b5b965a08c9c4b709ad036a25
 F test/zipfilefault.test 44d4d7a7f7cca7521d569d7f71026b241d65a6b1757aa409c1a168827edbbc2c
 F tool/GetFile.cs 47852aa0d806fe47ed1ac5138bdce7f000fe87aaa7f28107d0cb1e26682aeb44
@@ -2171,9 +2171,12 @@ F tool/version-info.c 33d0390ef484b3b1cb685d59362be891ea162123cea181cb8e6d2cf6dd
 F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7
 F tool/warnings.sh d924598cf2f55a4ecbc2aeb055c10bd5f48114793e7ba25f9585435da29e7e98
 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P 35b306565a10c16737ee433728ca188852f01c12dfae0cc9212d21db932486fb
-Q +aa0a28776bbeafb71b2db20ac8c16377ba07b7d3d58e46cfd11f60c694759a90
-R b6d2a2df3700901831e3e349367a01e1
-U dan
-Z 7a7c58819650a66b89dae7071e983d1c
+P f65aa46796068800905f6ff25efcb6338f864ce5bf8dcf6c7b9f5613b3973ab2
+Q +19e5ae6e20a1e2f41c5bc77b7bb99211b22d6fabf21e5f2f7f82028615eb791e
+Q +7bb633df97678b98515e603c5154ffc5b54055cff187d74a2c5d010e5b3720d1
+Q +ab916bad188b150321e420ec0009d909c287e3790b5d6ec683e2df9ed457ff15
+Q +ba003c7c74fb4dd665a8ec6dea7d030f1e7e9cbb13e60bb728860ebffdff5aaf
+R 145561ed197e324382aa282e9f872b25
+U drh
+Z 7959d07ae5ba316d612ee7dc685aa1e5
 # Remove this line to create a well-formed Fossil manifest.
index 0a99f1fb14cccbd72bbe78718fc79ee92ba87276..8245786c7bfbaabf158c798a6ddb9d965d793384 100644 (file)
@@ -1 +1 @@
-f65aa46796068800905f6ff25efcb6338f864ce5bf8dcf6c7b9f5613b3973ab2
+121b327f1f3941a9a44ab2d98e60f6e25b928ca9b54bbaa109239ba9012b3c3c
index 23aed0de5dfcfcde39d9556d3229705458aa5d65..bd4483ff7c21e9c7d48cf59cb71e5de83df75b9f 100644 (file)
@@ -13807,7 +13807,8 @@ int SQLITE_CDECL wmain(int argc, wchar_t **wargv){
       if( nCmd>0 ){
         sqlite3_fprintf(stderr,"Error: cannot mix regular SQL or dot-commands"
               " with \"%s\"\n", z);
-        return 1;
+        rc = 1;
+        goto shell_main_exit;
       }
       open_db(&data, OPEN_DB_ZIPFILE);
       if( z[2] ){
index 2b3be627870faecf4980838ac8428be518d5852f..b94901d57733904dc6bca4d7d039559b18ebb95b 100644 (file)
@@ -885,7 +885,10 @@ do_test 19.1 {
     INSERT INTO v0 DEFAULT VALUES;
   }
 } {}
+db close
 forcedelete zipfile19.zip
+sqlite3 db :memory:
+load_static_extension db zipfile
 
 #-------------------------------------------------------------------------
 do_catchsql_test 20.0 {