From: Mathieu Bridon Date: Thu, 9 Aug 2018 08:27:21 +0000 (+0200) Subject: python: Do not mix bytes and unicode strings X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=14f1ab998fcdcd8fec43c3da8ef03af4af2d3966;p=mesa.git python: Do not mix bytes and unicode strings Mixing the two is a long-standing recipe for errors in Python 2, so much so that Python 3 now completely separates them. This commit stops treating both as if they were the same, and in the process makes the script compatible with both Python 2 and 3. Signed-off-by: Mathieu Bridon Reviewed-by: Eric Engestrom Reviewed-by: Dylan Baker --- diff --git a/src/compiler/nir/nir_algebraic.py b/src/compiler/nir/nir_algebraic.py index a84c41a78f9..5baeea88afe 100644 --- a/src/compiler/nir/nir_algebraic.py +++ b/src/compiler/nir/nir_algebraic.py @@ -35,6 +35,12 @@ import traceback from nir_opcodes import opcodes +if sys.version_info < (3, 0): + string_type = unicode + +else: + string_type = str + _type_re = re.compile(r"(?Pint|uint|bool|float)?(?P\d+)?") def type_bits(type_str): @@ -66,11 +72,14 @@ class VarSet(object): class Value(object): @staticmethod def create(val, name_base, varset): + if isinstance(val, bytes): + val = val.decode('utf-8') + if isinstance(val, tuple): return Expression(val, name_base, varset) elif isinstance(val, Expression): return val - elif isinstance(val, (str, unicode)): + elif isinstance(val, string_type): return Variable(val, name_base, varset) elif isinstance(val, (bool, int, long, float)): return Constant(val, name_base)