diff --git a/lib/System/Path.cpp b/lib/System/Path.cpp
index 03cdbf7..af400e9 100644
--- a/lib/System/Path.cpp
+++ b/lib/System/Path.cpp
@@ -185,11 +185,6 @@
   return false;
 }
 
-std::string
-Path::getSuffix() const {
-  return path.substr(path.rfind('.') + 1);
-}
-
 static void getPathList(const char*path, std::vector<Path>& Paths) {
   const char* at = path;
   const char* delim = strchr(at, PathSeparator);
diff --git a/lib/System/Unix/Path.inc b/lib/System/Unix/Path.inc
index 6035a14..5b91b03 100644
--- a/lib/System/Unix/Path.inc
+++ b/lib/System/Unix/Path.inc
@@ -303,6 +303,22 @@
     return path.substr(slash, dot - slash);
 }
 
+std::string
+Path::getSuffix() const {
+  // Find the last slash
+  std::string::size_type slash = path.rfind('/');
+  if (slash == std::string::npos)
+    slash = 0;
+  else
+    slash++;
+
+  std::string::size_type dot = path.rfind('.');
+  if (dot == std::string::npos || dot < slash)
+    return std::string()
+  else
+    return path.substr(dot + 1);
+}
+
 bool Path::getMagicNumber(std::string& Magic, unsigned len) const {
   assert(len < 1024 && "Request for magic string too long");
   char* buf = (char*) alloca(1 + len);
diff --git a/lib/System/Win32/Path.inc b/lib/System/Win32/Path.inc
index b5897053..8f33664 100644
--- a/lib/System/Win32/Path.inc
+++ b/lib/System/Win32/Path.inc
@@ -259,6 +259,22 @@
     return path.substr(slash, dot - slash);
 }
 
+std::string
+Path::getSuffix() const {
+  // Find the last slash
+  size_t slash = path.rfind('/');
+  if (slash == std::string::npos)
+    slash = 0;
+  else
+    slash++;
+
+  size_t dot = path.rfind('.');
+  if (dot == std::string::npos || dot < slash)
+    return std::string();
+  else
+    return path.substr(dot + 1);
+}
+
 bool
 Path::exists() const {
   DWORD attr = GetFileAttributes(path.c_str());
