Skip to content
  • Ben Gamari's avatar
    Keep `shift{L,R}` on `Integer` from segfaulting · 182c44da
    Ben Gamari authored and Ben Gamari's avatar Ben Gamari committed
    This can happen because the underlying primitive operations in
    `integer-gmp` don't support negative shift-amounts, and since
    `integer-gmp` can't throw proper exceptions and just provides a
    low-level API, it simply segfaults instead...
    
    This patch simply removes the `shift{L,R}` method definitions (and
    defines `unsafeShift{L,R}` instead) whose default-impls fallback on
    using `shift` which properly handles negative shift arguments.
    
    This addresses #10571
    
    Test Plan: harbormaster can do it
    
    Reviewers: hvr, austin, rwbarton
    
    Subscribers: rwbarton, thomie, bgamari
    
    Differential Revision: https://phabricator.haskell.org/D1018
    
    GHC Trac Issues: #10571
    182c44da