Skip to content

Instantly share code, notes, and snippets.

@chrstphrchvz
Created November 17, 2018 13:01
Show Gist options
  • Save chrstphrchvz/4e00eed66d9661b9e3fb286bdadad965 to your computer and use it in GitHub Desktop.
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)
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
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