Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Fix more leaks in tclZipfs.c. Valgrind now reports no more leaks in tclZipfs.c |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | bug-fb2a411b91973d3b |
Files: | files | file ages | folders |
SHA3-256: |
20117765bd03fc9f083859c4dc10da50 |
User & Date: | pooryorick 2021-05-14 20:58:14.524 |
Original Comment: | Fix more leaks in tclZipfs.c. Valgrind now reports no more leaks. |
References
2021-05-14
| ||
21:00 | • Ticket [fb2a411b91] tclZipfs.c exit handlers don't deallocate allocated storage. status still Open with 4 other changes artifact: b30f756ae1 user: pooryorick | |
Context
2021-05-15
| ||
09:07 | Merge bug-fb2a411b91973d3b. check-in: a2aa650ca5 user: pooryorick tags: core-8-branch | |
2021-05-14
| ||
20:58 | Fix more leaks in tclZipfs.c. Valgrind now reports no more leaks in tclZipfs.c Closed-Leaf check-in: 20117765bd user: pooryorick tags: bug-fb2a411b91973d3b | |
20:49 | Fix more leaks in Zipfs finalization. check-in: 47601ca8e3 user: pooryorick tags: bug-fb2a411b91973d3b | |
Changes
Changes to generic/tclZipfs.c.
︙ | ︙ | |||
342 343 344 345 346 347 348 349 350 351 352 353 354 355 | Tcl_Obj *pathPtr, Tcl_Obj *objPtr); static int ZipFSLoadFile(Tcl_Interp *interp, Tcl_Obj *path, Tcl_LoadHandle *loadHandle, Tcl_FSUnloadFileProc **unloadProcPtr, int flags); static int ZipMapArchive(Tcl_Interp *interp, ZipFile *zf, void *handle); static void ZipfsExitHandler(ClientData clientData); static void ZipfsSetup(void); static void ZipfsFinalize(void); static int ZipChannelClose(void *instanceData, Tcl_Interp *interp, int flags); static Tcl_DriverGetHandleProc ZipChannelGetFile; static int ZipChannelRead(void *instanceData, char *buf, int toRead, int *errloc); | > | 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 | Tcl_Obj *pathPtr, Tcl_Obj *objPtr); static int ZipFSLoadFile(Tcl_Interp *interp, Tcl_Obj *path, Tcl_LoadHandle *loadHandle, Tcl_FSUnloadFileProc **unloadProcPtr, int flags); static int ZipMapArchive(Tcl_Interp *interp, ZipFile *zf, void *handle); static void ZipfsExitHandler(ClientData clientData); static void ZipfsMountExitHandler(ClientData clientData); static void ZipfsSetup(void); static void ZipfsFinalize(void); static int ZipChannelClose(void *instanceData, Tcl_Interp *interp, int flags); static Tcl_DriverGetHandleProc ZipChannelGetFile; static int ZipChannelRead(void *instanceData, char *buf, int toRead, int *errloc); |
︙ | ︙ | |||
1610 1611 1612 1613 1614 1615 1616 | Unlock(); /* * Convert to a real archive descriptor. */ zf->mountPoint = (char *) Tcl_GetHashKey(&ZipFS.zipHash, hPtr); | | | 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 | Unlock(); /* * Convert to a real archive descriptor. */ zf->mountPoint = (char *) Tcl_GetHashKey(&ZipFS.zipHash, hPtr); Tcl_CreateExitHandler(ZipfsMountExitHandler, zf); zf->mountPointLen = strlen(zf->mountPoint); zf->nameLength = strlen(zipname); zf->name = (char *) ckalloc(zf->nameLength + 1); memcpy(zf->name, zipname, zf->nameLength + 1); Tcl_SetHashValue(hPtr, zf); |
︙ | ︙ | |||
1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 | ZipFS.idCount = 1; ZipFS.wrmax = DEFAULT_WRITE_MAX_SIZE; ZipFS.fallbackEntryEncoding = (char *) ckalloc(strlen(ZIPFS_FALLBACK_ENCODING) + 1); strcpy(ZipFS.fallbackEntryEncoding, ZIPFS_FALLBACK_ENCODING); ZipFS.utf8 = Tcl_GetEncoding(NULL, "utf-8"); ZipFS.initialized = 1; } /* *------------------------------------------------------------------------- * * ListMountPoints -- * | > | 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 | ZipFS.idCount = 1; ZipFS.wrmax = DEFAULT_WRITE_MAX_SIZE; ZipFS.fallbackEntryEncoding = (char *) ckalloc(strlen(ZIPFS_FALLBACK_ENCODING) + 1); strcpy(ZipFS.fallbackEntryEncoding, ZIPFS_FALLBACK_ENCODING); ZipFS.utf8 = Tcl_GetEncoding(NULL, "utf-8"); ZipFS.initialized = 1; Tcl_CreateExitHandler(ZipfsExitHandler, NULL); } /* *------------------------------------------------------------------------- * * ListMountPoints -- * |
︙ | ︙ | |||
2175 2176 2177 2178 2179 2180 2181 | } if (z->data) { ckfree(z->data); } ckfree(z); } ZipFSCloseArchive(interp, zf); | | | 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 | } if (z->data) { ckfree(z->data); } ckfree(z); } ZipFSCloseArchive(interp, zf); Tcl_DeleteExitHandler(ZipfsMountExitHandler, zf); ckfree(zf); unmounted = 1; done: Unlock(); if (unmounted) { Tcl_FSMountsChanged(NULL); |
︙ | ︙ |