Update encodings.nim, fix open with bad arg raising no EncodingError (#23481)

On POSIX, `std/encodings` uses iconv, and `iconv_open` returns
`(iconv_t) -1` on failure, not `NULL`
This commit is contained in:
lit
2024-04-06 20:21:55 +08:00
committed by GitHub
parent 8c9fde76b5
commit c23d6a3cb9
2 changed files with 5 additions and 1 deletions

View File

@@ -342,7 +342,7 @@ proc open*(destEncoding = "UTF-8", srcEncoding = "CP1252"): EncodingConverter =
## Raises `EncodingError` if it cannot fulfill the request.
when not defined(windows):
result = iconvOpen(destEncoding, srcEncoding)
if result == nil:
if result == cast[EncodingConverter](-1):
raise newException(EncodingError,
"cannot create encoding converter from " &
srcEncoding & " to " & destEncoding)

View File

@@ -101,3 +101,7 @@ block:
doAssert orig == "\195\182\195\164\195\188\195\159"
doAssert ibm850 == "\148\132\129\225"
doAssert convert(ibm850, current, "ibm850") == orig
block: # fixes about #23481
doAssertRaises EncodingError:
discard open(destEncoding="this is a invalid enc")