Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | add selected tcl upstream changes |
---|---|
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
c72ad833c339fce5a3b1a28264bef78c |
User & Date: | chw 2016-09-15 18:37:39.366 |
Context
2016-09-15
| ||
18:39 | fix in tkpath regarding scroll region and GDI/GDI+ drawing, thanks Rene check-in: 9bfd93b377 user: chw tags: trunk | |
18:37 | add selected tcl upstream changes check-in: c72ad833c3 user: chw tags: trunk | |
10:37 | add selected tk upstream changes check-in: 5980340a41 user: chw tags: trunk | |
Changes
Changes to jni/tcl/generic/tclZlib.c.
︙ | ︙ | |||
2868 2869 2870 2871 2872 2873 2874 | static int ZlibTransformClose( ClientData instanceData, Tcl_Interp *interp) { ZlibChannelData *cd = instanceData; | | > > > > > > > > > > > < | < | | | | | | | | | | < | 2868 2869 2870 2871 2872 2873 2874 2875 2876 2877 2878 2879 2880 2881 2882 2883 2884 2885 2886 2887 2888 2889 2890 2891 2892 2893 2894 2895 2896 2897 2898 2899 2900 2901 2902 2903 2904 2905 2906 2907 2908 2909 2910 2911 2912 2913 2914 2915 2916 2917 2918 2919 2920 2921 2922 2923 2924 2925 2926 2927 2928 2929 | static int ZlibTransformClose( ClientData instanceData, Tcl_Interp *interp) { ZlibChannelData *cd = instanceData; int e, written, result = TCL_OK; /* * Delete the support timer. */ ZlibTransformEventTimerKill(cd); /* * Flush any data waiting to be compressed. */ if (cd->mode == TCL_ZLIB_STREAM_DEFLATE) { cd->outStream.avail_in = 0; do { cd->outStream.next_out = (Bytef *) cd->outBuffer; cd->outStream.avail_out = (unsigned) cd->outAllocated; e = deflate(&cd->outStream, Z_FINISH); written = cd->outAllocated - cd->outStream.avail_out; /* * Can't be sure that deflate() won't declare the buffer to be * full (with Z_BUF_ERROR) so handle that case. */ if (e == Z_BUF_ERROR) { e = Z_OK; written = cd->outAllocated; } if (e != Z_OK && e != Z_STREAM_END) { /* TODO: is this the right way to do errors on close? */ if (!TclInThreadExit()) { ConvertError(interp, e, cd->outStream.adler); } result = TCL_ERROR; break; } if (written && Tcl_WriteRaw(cd->parent, cd->outBuffer, written) < 0) { /* TODO: is this the right way to do errors on close? * Note: when close is called from FinalizeIOSubsystem then * interp may be NULL */ if (!TclInThreadExit() && interp) { Tcl_SetObjResult(interp, Tcl_ObjPrintf( "error while finalizing file: %s", Tcl_PosixError(interp))); } result = TCL_ERROR; break; } } while (e != Z_STREAM_END); (void) deflateEnd(&cd->outStream); } else { (void) inflateEnd(&cd->inStream); } |
︙ | ︙ | |||
3088 3089 3090 3091 3092 3093 3094 | do { cd->outStream.next_out = (Bytef *) cd->outBuffer; cd->outStream.avail_out = cd->outAllocated; e = deflate(&cd->outStream, Z_NO_FLUSH); produced = cd->outAllocated - cd->outStream.avail_out; | | > > > > > > > > > > | 3096 3097 3098 3099 3100 3101 3102 3103 3104 3105 3106 3107 3108 3109 3110 3111 3112 3113 3114 3115 3116 3117 3118 3119 3120 | do { cd->outStream.next_out = (Bytef *) cd->outBuffer; cd->outStream.avail_out = cd->outAllocated; e = deflate(&cd->outStream, Z_NO_FLUSH); produced = cd->outAllocated - cd->outStream.avail_out; if ((e == Z_OK && produced > 0) || e == Z_BUF_ERROR) { /* * deflate() indicates that it is out of space by returning * Z_BUF_ERROR; in that case, we must write the whole buffer out * and retry to compress what is left. */ if (e == Z_BUF_ERROR) { produced = cd->outAllocated; e = Z_OK; } if (Tcl_WriteRaw(cd->parent, cd->outBuffer, produced) < 0) { *errorCodePtr = Tcl_GetErrno(); return -1; } } } while (e == Z_OK && produced > 0 && cd->outStream.avail_in > 0); |
︙ | ︙ | |||
3349 3350 3351 3352 3353 3354 3355 | Tcl_DStringAppendElement(dsPtr, Tcl_GetString(cd->compDictObj)); } else { Tcl_DStringAppendElement(dsPtr, ""); } } else { if (cd->compDictObj) { | | | | | 3367 3368 3369 3370 3371 3372 3373 3374 3375 3376 3377 3378 3379 3380 3381 3382 3383 3384 | Tcl_DStringAppendElement(dsPtr, Tcl_GetString(cd->compDictObj)); } else { Tcl_DStringAppendElement(dsPtr, ""); } } else { if (cd->compDictObj) { int len; const char *str = Tcl_GetStringFromObj(cd->compDictObj, &len); Tcl_DStringAppend(dsPtr, str, len); } return TCL_OK; } } /* * The "header" option, which is only valid on inflating gzip channels, |
︙ | ︙ |
jni/tcl/library/tzdata/America/Resolute became a regular file.
︙ | ︙ |
jni/tcl/tests/tcltest.test became a regular file.
︙ | ︙ |
Changes to jni/tcl/tests/zlib.test.
︙ | ︙ | |||
913 914 915 916 917 918 919 920 921 922 923 924 925 926 | $stream put {*}$opts $line } set data [$stream get] list [string length $data] [string length [zlib decompress $data]] } -cleanup { $stream close } -result {12026 18000} ::tcltest::cleanupTests return # Local Variables: # mode: tcl # End: | > > > > > > > > > > > > > > > > > > > > > > > | 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 | $stream put {*}$opts $line } set data [$stream get] list [string length $data] [string length [zlib decompress $data]] } -cleanup { $stream close } -result {12026 18000} test zlib-12.2 {Patrick Dunnigan's issue} -constraints zlib -setup { set filesrc [makeFile {} test.input] set filedst [makeFile {} test.output] set f [open $filesrc "wb"] for {set i 0} {$i < 10000} {incr i} { puts -nonewline $f "x" } close $f } -body { set fin [open $filesrc "rb"] set fout [open $filedst "wb"] set header [dict create filename "test.input" time 0] try { fcopy $fin [zlib push gzip $fout -header $header] } finally { close $fin close $fout } file size $filedst } -cleanup { removeFile $filesrc removeFile $filedst } -result 4152 ::tcltest::cleanupTests return # Local Variables: # mode: tcl # End: |