• Ben Gamari's avatar
    Fix self-contained handling of ASCII encoding · d69dfba4
    Ben Gamari authored
    D898 was primarily intended to fix hangs in the event that iconv was
    unavailable (namely #10298 and #7695). In addition to this fix, it also
    introduced self-contained handling of ANSI terminals to allow compiled
    executables to run in minimal environments lacking iconv.
    
    However, the behavior that the patch introduced is highly suspicious.
    Specifically, it gives the user a UTF-8 encoding even if they requested
    ASCII.
    
    This has the potential to break quite a lot of code. At very least it
    breaks GHC's Unicode terminal detection logic, which attempts to catch
    an invalid character when encoding a pair of smart-quotes. Of course,
    this exception will never be thrown if a UTF-8 encoder is used.
    
    Here we use the `char8` encoding to handle requests for ASCII encodings
    in the event that we find iconv to be non-functional.
    
    Fixes #10623.
    
    Test Plan: Validate with T8959a
    
    Reviewers: rwbarton, hvr, austin, hsyl20
    
    Subscribers: thomie
    
    Differential Revision: https://phabricator.haskell.org/D1059
    
    GHC Trac Issues: #10623
    d69dfba4
Iconv.hs 7.37 KB