diff options
| author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2023-09-12 13:59:43 (GMT) |
|---|---|---|
| committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2023-09-12 13:59:43 (GMT) |
| commit | dceedefe67fb195d9b5afad584c48d0df74c5b24 (patch) | |
| tree | 2802ad1e29fb3c7929d1dfc3ecee6de6eee0b9e2 /generic/tclZipfs.c | |
| parent | 0f853031fb5b9551dd0e096bc17f598537ebc532 (diff) | |
| parent | 8e12c6c759673d73c53aae7e629eae0af065ecf8 (diff) | |
| download | tcl-dceedefe67fb195d9b5afad584c48d0df74c5b24.zip tcl-dceedefe67fb195d9b5afad584c48d0df74c5b24.tar.gz tcl-dceedefe67fb195d9b5afad584c48d0df74c5b24.tar.bz2 | |
Rebase to 9.0
Diffstat (limited to 'generic/tclZipfs.c')
| -rw-r--r-- | generic/tclZipfs.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/generic/tclZipfs.c b/generic/tclZipfs.c index f7c4b8b..f4b2857 100644 --- a/generic/tclZipfs.c +++ b/generic/tclZipfs.c @@ -2544,7 +2544,11 @@ ZipAddFile( * crazy enough to embed NULs in filenames, they deserve what they get! */ - zpathExt = Tcl_UtfToExternalDString(tclUtf8Encoding, zpathTcl, -1, &zpathDs); + if (Tcl_UtfToExternalDStringEx(interp, tclUtf8Encoding, zpathTcl, TCL_INDEX_NONE, 0, &zpathDs, NULL) != TCL_OK) { + Tcl_DStringFree(&zpathDs); + return TCL_ERROR; + } + zpathExt = Tcl_DStringValue(&zpathDs); zpathlen = strlen(zpathExt); if (zpathlen + ZIP_CENTRAL_HEADER_LEN > bufsize) { Tcl_SetObjResult(interp, Tcl_ObjPrintf( @@ -3213,7 +3217,11 @@ ZipFSMkZipOrImg( } z = (ZipEntry *) Tcl_GetHashValue(hPtr); - name = Tcl_UtfToExternalDString(tclUtf8Encoding, z->name, TCL_INDEX_NONE, &ds); + if (Tcl_UtfToExternalDStringEx(interp, tclUtf8Encoding, z->name, TCL_INDEX_NONE, 0, &ds, NULL) != TCL_OK) { + ret = TCL_ERROR; + goto done; + } + name = Tcl_DStringValue(&ds); len = Tcl_DStringLength(&ds); SerializeCentralDirectoryEntry(start, end, (unsigned char *) buf, z, len); |
