diff --git a/lib/files/cache/cache.php b/lib/files/cache/cache.php
index 3818fdbd84065fb43b7ed2d9f731dddcd3e74674..5b8dc46b771ce72f4b16c976360d1bc7cef232a7 100644
--- a/lib/files/cache/cache.php
+++ b/lib/files/cache/cache.php
@@ -200,7 +200,7 @@ class Cache {
 
 			$data['path'] = $file;
 			$data['parent'] = $this->getParentId($file);
-			$data['name'] = basename($file);
+			$data['name'] = \OC_Util::basename($file);
 			$data['encrypted'] = isset($data['encrypted']) ? ((int)$data['encrypted']) : 0;
 
 			list($queryParts, $params) = $this->buildParts($data);
diff --git a/lib/util.php b/lib/util.php
index 1f666a5e37fd4df3b141f815090722b11f89df04..b7dc2207e6c17a8a768a605c540754fe150a4f0a 100755
--- a/lib/util.php
+++ b/lib/util.php
@@ -894,4 +894,11 @@ class OC_Util {
 
 		return $value;
 	}
+
+	public static function basename($file)
+	{
+		$file = rtrim($file, '/');
+		$t = explode('/', $file);
+		return array_pop($t);
+	}
 }
diff --git a/tests/lib/util.php b/tests/lib/util.php
index 9742d57ac7a9ba57d7783966d1b50bdece147908..a038538d7eab7689394b4641807b82c68e12428f 100644
--- a/tests/lib/util.php
+++ b/tests/lib/util.php
@@ -8,12 +8,9 @@
 
 class Test_Util extends PHPUnit_Framework_TestCase {
 
-	// Constructor
-	function Test_Util() {
+	function testFormatDate() {
 		date_default_timezone_set("UTC");
-	}
 
-	function testFormatDate() {
 		$result = OC_Util::formatDate(1350129205);
 		$expected = 'October 13, 2012 11:53';
 		$this->assertEquals($expected, $result);
@@ -61,8 +58,28 @@ class Test_Util extends PHPUnit_Framework_TestCase {
 		OC_Config::deleteKey('mail_domain');
 	}
 
-  function testGetInstanceIdGeneratesValidId() {
-    OC_Config::deleteKey('instanceid');
-    $this->assertStringStartsWith('oc', OC_Util::getInstanceId());
-  }
+	function testGetInstanceIdGeneratesValidId() {
+		OC_Config::deleteKey('instanceid');
+		$this->assertStringStartsWith('oc', OC_Util::getInstanceId());
+	}
+
+	/**
+	 * @dataProvider baseNameProvider
+	 */
+	public function testBaseName($expected, $file)
+	{
+		$base = \OC_Util::basename($file);
+		$this->assertEquals($expected, $base);
+	}
+
+	public function baseNameProvider()
+	{
+		return array(
+			array('public_html', '/home/user/public_html/'),
+			array('public_html', '/home/user/public_html'),
+			array('', '/'),
+			array('public_html', 'public_html'),
+			array('442aa682de2a64db1e010f50e60fd9c9', 'local::C:\Users\ADMINI~1\AppData\Local\Temp\2/442aa682de2a64db1e010f50e60fd9c9/')
+		);
+	}
 }