diff options
author | Guido van Rossum <guido@python.org> | 2007-05-09 23:40:37 +0000 |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 2007-05-09 23:40:37 +0000 |
commit | 0e02abb791386dc4baa92ad0e3ee9eb59f039629 (patch) | |
tree | f77f69b81465b570d1a54fcf7087be48ae5cca7e /Lib/encodings | |
parent | Use AsCharBuffer to get a C string out of a Python string. (diff) | |
download | cpython-0e02abb791386dc4baa92ad0e3ee9eb59f039629.tar.gz cpython-0e02abb791386dc4baa92ad0e3ee9eb59f039629.tar.bz2 cpython-0e02abb791386dc4baa92ad0e3ee9eb59f039629.zip |
Random modifications that slightly improve the chances of this not blowing up.
Walter will fix it for real.
Diffstat (limited to 'Lib/encodings')
-rw-r--r-- | Lib/encodings/idna.py | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/Lib/encodings/idna.py b/Lib/encodings/idna.py index b226d22fda5..5c3d05663e8 100644 --- a/Lib/encodings/idna.py +++ b/Lib/encodings/idna.py @@ -87,7 +87,7 @@ def ToASCII(label): raise UnicodeError("label empty or too long") # Step 5: Check ACE prefix - if label.startswith(uace_prefix): + if label.startswith(ace_prefix): raise UnicodeError("Label starts with ACE prefix") # Step 6: Encode with PUNYCODE @@ -103,7 +103,7 @@ def ToASCII(label): def ToUnicode(label): # Step 1: Check for ASCII - if isinstance(label, str): + if isinstance(label, bytes): pure_ascii = True else: try: @@ -150,19 +150,19 @@ class Codec(codecs.Codec): raise UnicodeError("unsupported error handling "+errors) if not input: - return "", 0 + return b"", 0 result = [] labels = dots.split(input) if labels and len(labels[-1])==0: - trailing_dot = '.' + trailing_dot = b'.' del labels[-1] else: - trailing_dot = '' + trailing_dot = b'' for label in labels: result.append(ToASCII(label)) # Join with U+002E - return ".".join(result)+trailing_dot, len(input) + return b".".join(result)+trailing_dot, len(input) def decode(self,input,errors='strict'): @@ -173,13 +173,12 @@ class Codec(codecs.Codec): return "", 0 # IDNA allows decoding to operate on Unicode strings, too. - if isinstance(input, str): + if isinstance(input, bytes): labels = dots.split(input) else: - # Must be ASCII string - input = str(input) - str(input, "ascii") - labels = input.split(".") + # Force to bytes + input = bytes(input) + labels = input.split(b".") if labels and len(labels[-1]) == 0: trailing_dot = '.' |