diff options
author | Mathieu Bridon <[email protected]> | 2018-06-17 17:53:16 +0200 |
---|---|---|
committer | Eric Engestrom <[email protected]> | 2018-08-01 14:26:19 +0100 |
commit | e40200e0aa14ec4180dd090dd37a2de80b5e4119 (patch) | |
tree | 90d0638c7cab1bbe4a1179caadfcd97ab59b4932 /src/loader | |
parent | 12eb5b496bc311ebfd1e68921ec7429e709daaca (diff) |
python: Don't abuse hex()
The hex() builtin returns a string containing the hexa-decimal
representation of an integer.
When the argument is not an integer, then the function calls that
object's __hex__() method, if one is defined. That method is supposed to
return a string.
While that's not explicitly documented, that string is supposed to be a
valid hexa-decimal representation for a number. Python 2 doesn't enforce
this though, which is why we got away with returning things like
'NIR_TRUE' which are not numbers.
In Python 3, the hex() builtin instead calls an object's __index__()
method, which itself must return an integer. That integer is then
automatically converted to a string with its hexa-decimal representation
by the rest of the hex() function.
As a result, we really can't make this compatible with Python 3 as it
is.
The solution is to stop using the hex() builtin, and instead use a hex()
object method, which can return whatever we want, in Python 2 and 3.
Signed-off-by: Mathieu Bridon <[email protected]>
Reviewed-by: Eric Engestrom <[email protected]>
Reviewed-by: Dylan Baker <[email protected]>
Diffstat (limited to 'src/loader')
0 files changed, 0 insertions, 0 deletions