1.1 --- a/lib/posix/iconv.py Tue Jan 10 18:47:33 2017 +0100
1.2 +++ b/lib/posix/iconv.py Tue Jan 10 19:08:11 2017 +0100
1.3 @@ -22,10 +22,17 @@
1.4 from __builtins__.types import check_int, check_string
1.5 from native import iconv, iconv_close, iconv_open, iconv_reset
1.6
1.7 -# Errors produced by iconv.
1.8 +class IncompleteSequenceError(OSError):
1.9 +
1.10 + "An error indicating an incomplete multibyte sequence."
1.11 +
1.12 + pass
1.13
1.14 -EINVAL = 22
1.15 -EILSEQ = 84
1.16 +class InvalidSequenceError(OSError):
1.17 +
1.18 + "An error indicating an incomplete multibyte sequence."
1.19 +
1.20 + pass
1.21
1.22 class ConverterError(Exception):
1.23
1.24 @@ -86,14 +93,14 @@
1.25
1.26 # Incomplete input does not cause an exception.
1.27
1.28 - except OSError, exc:
1.29 - if exc.value == EINVAL:
1.30 - self.result.append(exc.arg)
1.31 - return
1.32 - elif exc.value == EILSEQ:
1.33 - raise UnicodeDecodeError(exc.arg)
1.34 - else:
1.35 - raise
1.36 + except IncompleteSequenceError, exc:
1.37 + self.result.append(exc.arg)
1.38 + return
1.39 +
1.40 + # Invalid input causes a Unicode exception.
1.41 +
1.42 + except InvalidSequenceError, exc:
1.43 + raise UnicodeDecodeError(exc.arg)
1.44
1.45 # Add any returned text to the result.
1.46