summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2016-02-03 08:45:48 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2016-02-03 08:45:48 (GMT)
commit098b03f8f4259f1767486350c21f5b7e11a6e06b (patch)
treeaad83227050d3fc352558e0158ae131f6e737f96
parent312ef46823e21b861e68eeb0073936e15177c0f7 (diff)
downloadtk-098b03f8f4259f1767486350c21f5b7e11a6e06b.zip
tk-098b03f8f4259f1767486350c21f5b7e11a6e06b.tar.gz
tk-098b03f8f4259f1767486350c21f5b7e11a6e06b.tar.bz2
Backout [477949] for Tk 8.5, after discussion in TclCore mailing list: option readfile cannot use multibytes. Ticket [0a3d799a]
To clarify a bit, what we discovered was that [[option readfile]] as found in all Tk releases up to and including 8.5.18 is already able to read in the whole BMP, so long as the file is stored in the encoding utf-8. The classic ASCII subset is fine. utf-8 is fine. Other encodings are at best non-portable. What [477949] did was to add support for files stored in [[encoding system]] but at the expense of breaking the support for the files stored in utf-8. Not the right outcome for a patch release.
-rw-r--r--generic/tkOption.c13
-rwxr-xr-xtests/option.file318
-rw-r--r--tests/option.test11
3 files changed, 6 insertions, 36 deletions
diff --git a/generic/tkOption.c b/generic/tkOption.c
index 17989f8..95b140d 100644
--- a/generic/tkOption.c
+++ b/generic/tkOption.c
@@ -1086,7 +1086,7 @@ ReadOptionFile(
char *buffer;
int result, bufferSize;
Tcl_Channel chan;
- Tcl_DString newName, optString;
+ Tcl_DString newName;
/*
* Prevent file system access in a safe interpreter.
@@ -1136,16 +1136,7 @@ ReadOptionFile(
}
Tcl_Close(NULL, chan);
buffer[bufferSize] = 0;
- if ((bufferSize>2) && !memcmp(buffer, "\357\273\277", 3)) {
- /* File starts with UTF-8 BOM */
- result = AddFromString(interp, tkwin, buffer+3, priority);
- } else {
- Tcl_DStringInit(&optString);
- Tcl_ExternalToUtfDString(NULL, buffer, bufferSize, &optString);
- result = AddFromString(interp, tkwin, Tcl_DStringValue(&optString),
- priority);
- Tcl_DStringFree(&optString);
- }
+ result = AddFromString(interp, tkwin, buffer, priority);
ckfree(buffer);
return result;
}
diff --git a/tests/option.file3 b/tests/option.file3
deleted file mode 100755
index 87f41ae..0000000
--- a/tests/option.file3
+++ /dev/null
@@ -1,18 +0,0 @@
-! This file is a sample option (resource) database used to test
-! Tk's option-handling capabilities.
-
-! Comment line \
- with a backslash-newline sequence embedded in it.
-
-*x1: blue
- tktest.x2 : green
-*\
-x3 \
- : pur\
-ple
-*x 4: brówn
-# More comments, this time delimited by hash-marks.
- # Comment-line with space.
-*x6:
-*x9: \ \ \\\101\n
-# comment line as last line of file.
diff --git a/tests/option.test b/tests/option.test
index 4668771..1bfcb7c 100644
--- a/tests/option.test
+++ b/tests/option.test
@@ -187,7 +187,6 @@ test option-14.12 {error conditions} {
set option1 [file join [testsDirectory] option.file1]
set option2 [file join [testsDirectory] option.file2]
-set option3 [file join [testsDirectory] option.file3]
test option-15.1 {database files} {
list [catch {option read non-existent} msg] $msg
@@ -208,18 +207,16 @@ test option-15.9 {database files} {option get . x3 color} burgundy
test option-15.10 {database files} {
list [catch {option read $option2} msg] $msg
} {1 {missing colon on line 2}}
-option read $option3
-test option-15.11 {database files} {option get . {x 4} color} br\xf3wn
test option-16.1 {ReadOptionFile} {
- set option4 [makeFile {} option.file3]
- set file [open $option4 w]
+ set option3 [makeFile {} option.file3]
+ set file [open $option3 w]
fconfigure $file -translation crlf
puts $file "*x7: true\n*x8: false"
close $file
- option read $option4 userDefault
+ option read $option3 userDefault
set result [list [option get . x7 color] [option get . x8 color]]
- removeFile $option4
+ removeFile $option3
set result
} {true false}