diff --git a/CHANGES b/CHANGES
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,7 @@
+Changed in version 0.6.4.5:
+   * #116: Prevent hang on 64-bit systems when the prompt contains a control
+           character.
+
 Changed in version 0.6.4.4:
    * #115: Fix the behavior of the 'f' and 't' commands when deleting text.
    * #73: Fix regression: pasting multiple lines could drop some characters.
diff --git a/System/Console/Haskeline/Backend/WCWidth.hs b/System/Console/Haskeline/Backend/WCWidth.hs
--- a/System/Console/Haskeline/Backend/WCWidth.hs
+++ b/System/Console/Haskeline/Backend/WCWidth.hs
@@ -13,13 +13,13 @@
 import Data.List
 import Foreign.C.Types
 
-foreign import ccall unsafe mk_wcwidth :: CWchar -> Int
+foreign import ccall unsafe mk_wcwidth :: CWchar -> CInt
 
 wcwidth :: Char -> Int
 wcwidth c = case mk_wcwidth $ toEnum $ fromEnum c of
                 -1 -> 0 -- Control characters have zero width.  (Used by the
                         -- "\SOH...\STX" hack in LineState.stringToGraphemes.)
-                w -> w
+                w -> fromIntegral w
 
 gWidth :: Grapheme -> Int
 gWidth g = wcwidth (baseChar g)
diff --git a/haskeline.cabal b/haskeline.cabal
--- a/haskeline.cabal
+++ b/haskeline.cabal
@@ -1,6 +1,6 @@
 Name:           haskeline
 Cabal-Version:  >=1.6
-Version:        0.6.4.4
+Version:        0.6.4.5
 Category:       User Interfaces
 License:        BSD3
 License-File:   LICENSE
