summaryrefslogtreecommitdiffstats
path: root/src/engine/SCons/Scanner
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2009-03-02 23:10:32 (GMT)
committerSteven Knight <knight@baldmt.com>2009-03-02 23:10:32 (GMT)
commitd6d135367931bcab667ce5d636e905d9712d6370 (patch)
tree81cca89c9d937d3b1674fc7ec33763cba376df56 /src/engine/SCons/Scanner
parent0d621c8ecd14c47d09a4b42e527b639135d70fc8 (diff)
downloadSCons-d6d135367931bcab667ce5d636e905d9712d6370.zip
SCons-d6d135367931bcab667ce5d636e905d9712d6370.tar.gz
SCons-d6d135367931bcab667ce5d636e905d9712d6370.tar.bz2
Issue 2360: fix a TypeError from attempts to intern() unicode objects
returned to the ClassicCPPScanner.
Diffstat (limited to 'src/engine/SCons/Scanner')
-rw-r--r--src/engine/SCons/Scanner/ScannerTests.py11
-rw-r--r--src/engine/SCons/Scanner/__init__.py8
2 files changed, 18 insertions, 1 deletions
diff --git a/src/engine/SCons/Scanner/ScannerTests.py b/src/engine/SCons/Scanner/ScannerTests.py
index e3fa4ed..518e0ed 100644
--- a/src/engine/SCons/Scanner/ScannerTests.py
+++ b/src/engine/SCons/Scanner/ScannerTests.py
@@ -568,6 +568,17 @@ class ClassicCPPTestCase(unittest.TestCase):
assert n == 'path/bbb', n
assert i == 'bbb', i
+ # TODO(1.5): remove when 2.2 is minimal; replace ccc
+ # variable in find_include() call below with in-line u'ccc'.
+ try:
+ ccc = eval("u'ccc'")
+ except SyntaxError:
+ ccc = 'ccc'
+
+ n, i = s.find_include(('<', ccc), 'foo', ('path',))
+ assert n == 'path/ccc', n
+ assert i == 'ccc', i
+
finally:
SCons.Node.FS.find_file = save
diff --git a/src/engine/SCons/Scanner/__init__.py b/src/engine/SCons/Scanner/__init__.py
index 6863aa1..c0d84b9 100644
--- a/src/engine/SCons/Scanner/__init__.py
+++ b/src/engine/SCons/Scanner/__init__.py
@@ -405,7 +405,13 @@ class ClassicCPP(Classic):
n = SCons.Node.FS.find_file(include[1], paths)
- return n, intern(include[1])
+ i = include[1]
+ try:
+ i = intern(i)
+ except TypeError:
+ # Probably a unicode object; just don't worry about intern().
+ pass
+ return n, i
def sort_key(self, include):
return SCons.Node.FS._my_normcase(string.join(include))