Created
November 17, 2018 13:01
-
-
Save chrstphrchvz/4e00eed66d9661b9e3fb286bdadad965 to your computer and use it in GitHub Desktop.
tcl/tk 8.6.9rc4 vs 8.6.9 final (2018-11-16)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff -r -u tcl8.6.9rc4/changes tcl8.6.9-final/changes | |
--- tcl8.6.9rc4/changes 2018-11-09 13:13:55.000000000 -0600 | |
+++ tcl8.6.9-final/changes 2018-11-16 12:40:53.000000000 -0600 | |
@@ -8891,4 +8891,6 @@ | |
2018-11-09 (bug)[35a8f1] overlong string length of some lists (owens) | |
+2018-11-16 (bug)[00d04c] Repair [binary encode base64] (sebres) | |
+ | |
- Released 8.6.9, November 16, 2018 - details at http://core.tcl-lang.org/tcl/ - | |
diff -r -u tcl8.6.9rc4/generic/tclBinary.c tcl8.6.9-final/generic/tclBinary.c | |
--- tcl8.6.9rc4/generic/tclBinary.c 2017-10-13 08:41:43.000000000 -0500 | |
+++ tcl8.6.9-final/generic/tclBinary.c 2018-11-16 12:40:06.000000000 -0600 | |
@@ -2914,6 +2914,11 @@ | |
} else if (i > 1) { | |
c = '='; | |
} else { | |
+ if (strict && i <= 1) { | |
+ /* single resp. unfulfilled char (each 4th next single char) | |
+ * is rather bad64 error case in strict mode */ | |
+ goto bad64; | |
+ } | |
cut += 3; | |
break; | |
} | |
@@ -2944,9 +2949,11 @@ | |
value = (value << 6) | 0x3e; | |
} else if (c == '/') { | |
value = (value << 6) | 0x3f; | |
- } else if (c == '=') { | |
+ } else if (c == '=' && ( | |
+ !strict || i > 1) /* "=" and "a=" is rather bad64 error case in strict mode */ | |
+ ) { | |
value <<= 6; | |
- cut++; | |
+ if (i) cut++; | |
} else if (strict || !isspace(c)) { | |
goto bad64; | |
} else { | |
diff -r -u tcl8.6.9rc4/tests/binary.test tcl8.6.9-final/tests/binary.test | |
--- tcl8.6.9rc4/tests/binary.test 2017-10-13 08:36:31.000000000 -0500 | |
+++ tcl8.6.9-final/tests/binary.test 2018-11-16 12:40:06.000000000 -0600 | |
@@ -2711,6 +2711,46 @@ | |
test binary-73.31 {binary decode base64} -body { | |
list [string length [set r [binary decode base64 WA==WFla]]] $r | |
} -returnCodes error -match glob -result {invalid base64 character *} | |
+test binary-73.32 {binary decode base64, bug [00d04c4f12]} -body { | |
+ list \ | |
+ [string length [binary decode base64 =]] \ | |
+ [string length [binary decode base64 " ="]] \ | |
+ [string length [binary decode base64 " ="]] \ | |
+ [string length [binary decode base64 "\r\n\t="]] \ | |
+} -result [lrepeat 4 0] | |
+test binary-73.33 {binary decode base64, bug [00d04c4f12]} -body { | |
+ list \ | |
+ [string length [binary decode base64 ==]] \ | |
+ [string length [binary decode base64 " =="]] \ | |
+ [string length [binary decode base64 " =="]] \ | |
+ [string length [binary decode base64 " =="]] \ | |
+} -result [lrepeat 4 0] | |
+test binary-73.34 {binary decode base64, (compatibility) unfulfilled base64 (single char) in non-strict mode} -body { | |
+ list \ | |
+ [expr {[binary decode base64 a] eq [binary decode base64 ""]}] \ | |
+ [expr {[binary decode base64 abcda] eq [binary decode base64 "abcd"]}] | |
+} -result [lrepeat 2 1] | |
+test binary-73.35 {binary decode base64, bad base64 in strict mode} -body { | |
+ set r {} | |
+ foreach c {a " a" " a" " a" " a" abcda abcdabcda a= a== abcda= abcda==} { | |
+ lappend r \ | |
+ [catch {binary decode base64 $c}] \ | |
+ [catch {binary decode base64 -strict $c}] | |
+ } | |
+ set r | |
+} -result [lrepeat 11 0 1] | |
+test binary-73.36 {binary decode base64: check encoded & decoded equals original} -body { | |
+ set r {} | |
+ for {set i 0} {$i < 255 && [llength $r] < 20} {incr i} { | |
+ foreach c {1 2 3 4 5 6 7 8} { | |
+ set c [string repeat [format %c $i] $c] | |
+ if {[set a [binary decode base64 [set x [binary encode base64 $c]]]] ne $c} { | |
+ lappend r "encode & decode is wrong on string `$c` (encoded: $x): `$a` != `$c`" | |
+ } | |
+ } | |
+ } | |
+ join $r \n | |
+} -result {} | |
test binary-74.1 {binary encode uuencode} -body { | |
binary encode uuencode |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff -r -u tk8.6.9rc4/changes tk8.6.9-final/changes | |
--- tk8.6.9rc4/changes 2018-11-05 06:47:36.000000000 -0600 | |
+++ tk8.6.9-final/changes 2018-11-16 13:02:17.000000000 -0600 | |
@@ -7568,4 +7568,4 @@ | |
2018-11-04 (bug)[6b22d4] [treeview] binding fix (ohagan) | |
-- Released 8.6.9, November 9, 2018 - http://core.tcl-lang.org/tk/ for details - | |
+- Released 8.6.9, November 16, 2018 - http://core.tcl-lang.org/tk/ for details - | |
diff -r -u tk8.6.9rc4/macosx/tkMacOSXWindowEvent.c tk8.6.9-final/macosx/tkMacOSXWindowEvent.c | |
--- tk8.6.9rc4/macosx/tkMacOSXWindowEvent.c 2018-11-12 12:13:59.000000000 -0600 | |
+++ tk8.6.9-final/macosx/tkMacOSXWindowEvent.c 2018-11-16 13:02:17.000000000 -0600 | |
@@ -922,16 +922,19 @@ | |
TkMacOSXUpdateClipRgn(winPtr); | |
/* | |
- * Finally, generate and process expose events to redraw the window. | |
+ * Generate and process expose events to redraw the window. | |
*/ | |
HIRect bounds = NSRectToCGRect([self bounds]); | |
HIShapeRef shape = HIShapeCreateWithRect(&bounds); | |
[self generateExposeEvents: shape]; | |
[w displayIfNeeded]; | |
- if ([NSApp macMinorVersion] > 13) { | |
- [NSApp setIsDrawing:NO]; | |
- } | |
+ | |
+ /* | |
+ * Finally, unlock the main autoreleasePool. | |
+ */ | |
+ | |
+ [NSApp _unlockAutoreleasePool]; | |
} | |
} | |
diff -r -u tk8.6.9rc4/macosx/tkMacOSXWm.c tk8.6.9-final/macosx/tkMacOSXWm.c | |
--- tk8.6.9rc4/macosx/tkMacOSXWm.c 2018-11-12 12:13:59.000000000 -0600 | |
+++ tk8.6.9-final/macosx/tkMacOSXWm.c 2018-11-16 13:02:17.000000000 -0600 | |
@@ -468,7 +468,8 @@ | |
title = "unnamed window"; | |
} | |
if (DEBUG_ZOMBIES > 1){ | |
- printf("Autoreleased <%s>. Count is %lu\n", title, [self retainCount]); | |
+ fprintf(stderr, "Autoreleased <%s>. Count is %lu\n", | |
+ title, [self retainCount]); | |
} | |
return result; | |
} | |
@@ -479,7 +480,8 @@ | |
title = "unnamed window"; | |
} | |
if (DEBUG_ZOMBIES > 1){ | |
- printf("Releasing <%s>. Count is %lu\n", title, [self retainCount]); | |
+ fprintf(stderr, "Releasing <%s>. Count is %lu\n", | |
+ title, [self retainCount]); | |
} | |
[super release]; | |
} | |
@@ -490,7 +492,8 @@ | |
title = "unnamed window"; | |
} | |
if (DEBUG_ZOMBIES > 0){ | |
- printf(">>>> Freeing <%s>. Count is %lu\n", title, [self retainCount]); | |
+ fprintf(stderr, ">>>> Freeing <%s>. Count is %lu\n", | |
+ title, [self retainCount]); | |
} | |
[super dealloc]; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment