Repository : ssh://darcs.haskell.org//srv/darcs/ghc

On branch  : master

http://hackage.haskell.org/trac/ghc/changeset/50fddb2b046605315f903d9b744780497cc978de

>---------------------------------------------------------------

commit 50fddb2b046605315f903d9b744780497cc978de
Author: Paolo Capriotti <[email protected]>
Date:   Mon Jun 4 11:59:25 2012 +0100

    Improve error message for invalid package db file (#6133).
    
    Use `reads` instead of `read` to parse package configuration files, and
    report a meaningful error when the parsing fails.

>---------------------------------------------------------------

 compiler/main/Packages.lhs |    7 ++++++-
 1 files changed, 6 insertions(+), 1 deletions(-)

diff --git a/compiler/main/Packages.lhs b/compiler/main/Packages.lhs
index cdda961..42e5cf5 100644
--- a/compiler/main/Packages.lhs
+++ b/compiler/main/Packages.lhs
@@ -59,6 +59,7 @@ import System.Directory
 import System.FilePath as FilePath
 import qualified System.FilePath.Posix as FilePath.Posix
 import Control.Monad
+import Data.Char (isSpace)
 import Data.List as List
 import Data.Map (Map)
 import qualified Data.Map as Map
@@ -234,7 +235,11 @@ readPackageConfig dflags conf_file = do
                 "can't find a package database at " ++ conf_file
             debugTraceMsg dflags 2 (text "Using package config file:" <+> text 
conf_file)
             str <- readFile conf_file
-            return (map installedPackageInfoToPackageConfig $ read str)
+            case reads str of
+                [(configs, rest)]
+                    | all isSpace rest -> return (map 
installedPackageInfoToPackageConfig configs)
+                _ -> ghcError $ InstallationError $
+                        "invalid package database file " ++ conf_file
 
   let
       top_dir = topDir dflags



_______________________________________________
Cvs-ghc mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-ghc

Reply via email to