diff --git a/posix-paths.cabal b/posix-paths.cabal
--- a/posix-paths.cabal
+++ b/posix-paths.cabal
@@ -1,16 +1,16 @@
-name:		posix-paths
-version:  0.2.1.3
-license:	BSD3
-license-file:	LICENSE
-maintainer:	jwlato@gmail.com
+name:  posix-paths
+version:  0.2.1.4
+license: BSD3
+license-file: LICENSE
+maintainer: jwlato@gmail.com
 bug-reports: http://github.com/JohnLato/posix-paths/issues
-synopsis:	POSIX filepath/directory functionality
-category:       System
+synopsis: POSIX filepath/directory functionality
+category: System
 description:
-	This package gives access to certain POSIX-based Filepath/Directory
+  This package gives access to certain POSIX-based Filepath/Directory
   services.
-	.
-	The package is not supported under Windows (except under Cygwin).
+  .
+  The package is not supported under Windows (except under Cygwin).
 extra-source-files: cbits/dirutils.h
                     doctests.hs
                     benchmarks/*.hs
diff --git a/src/System/Posix/FilePath.hs b/src/System/Posix/FilePath.hs
--- a/src/System/Posix/FilePath.hs
+++ b/src/System/Posix/FilePath.hs
@@ -459,7 +459,9 @@
 _equalFilePath :: RawFilePath -> RawFilePath -> Bool
 _equalFilePath a b = norm a == norm b
   where
-    norm = dropDups . dropTrailingSlash . dropInitialDot
+    -- Drop trailing slash *after* we've dropped duplicate slashes,
+    -- otherwise there might be trailing slashes left.
+    norm = dropTrailingSlash . dropDups . dropInitialDot
     dropTrailingSlash path
         | BS.length path >= 2 && isPathSeparator (BS.last path) = BS.init path
         | otherwise = path
@@ -468,5 +470,5 @@
         | otherwise = path
     dropDups = joinPath . map f . splitPath
     f component
-        | BS.isSuffixOf "//" component = BS.init component
+        | BS.isSuffixOf "//" component = f (BS.init component) -- there might be more slashes
         | otherwise = component
