Make redo read byte-strings from the database.

By default, the database redo uses to store file state returns filenames
as Unicode strings, and if redo tries to run a build-script whose
fully-qualified path contains non-ASCII characters then redo crashes
when trying to promote the path to a Unicode string.

This patch ensures that the database always returns byte-strings, not
Unicode strings. That way, the fully-qualified path and the target name
are both byte-strings and can be joined without issue.

(Fixes a bug reported by Zoran Zaric.)
This commit is contained in:
Tim Allen 2011-02-14 22:41:43 +11:00 committed by Avery Pennarun
commit e27aaf01e7
4 changed files with 5 additions and 1 deletions

View file

View file

@ -3,4 +3,5 @@ redo-ifchange all
redo nonshelltest shelltest \
deltest deltest2 test.args test2.args passfailtest chdirtest \
curse/test deps/test "space dir/test" modetest makedir2 \
silencetest touchtest stamp/test alwaystest ifcreate-test
silencetest touchtest stamp/test alwaystest ifcreate-test \
unicode

2
t/unicode.do Normal file
View file

@ -0,0 +1,2 @@
# Test that redo can handle a script whose path contains non-ASCII characters.
redo test-uniçøðë/test1