diff --git a/ghc/driver/ghc-iface.lprl b/ghc/driver/ghc-iface.lprl index 3fae1d10dd3ac050c3830c95ead4ef092c762422..e9f2df01c999ac23ae92bbc593f818c68809b215 100644 --- a/ghc/driver/ghc-iface.lprl +++ b/ghc/driver/ghc-iface.lprl @@ -133,9 +133,12 @@ sub constructNewHiFile { $mod_name_dec =~ s/ZZ/Z/g; if ($Specific_hi_file eq '') { # -ohi is used even if module name != stem of filename. - ($hiname = $hifile_target) = $1 if $hifile_target =~ /\/?([^\/\.]+)\.$HiSuffix/; + ($hiname = $hifile_target) = $1 if $hifile_target =~ /\/?([^\/]+)\.$HiSuffix$/; if ( $mod_name_dec ne $hiname ) { - ($hidir = $hifile_target) =~ s/(.*)$hiname\.$HiSuffix/$1/; + $hidir = ''; + # strip off basename only if we've got a dirname. + ($hidir = $hifile_target) =~ s/(.*\/)[^\/]*$/$1/ + if ( $hifile_target =~ /\/$hiname\.$HiSuffix/ ); $hifile_target = $hidir . $mod_name_dec . ".$HiSuffix"; } }