diff --git a/_test/tests/inc/subscription_set.test.php b/_test/tests/inc/subscription_set.test.php
new file mode 100644
index 0000000000000000000000000000000000000000..5c0a6c8169287a7acdc43f75360bef8de91b3b6f
--- /dev/null
+++ b/_test/tests/inc/subscription_set.test.php
@@ -0,0 +1,20 @@
+<?php
+/**
+ * Tests the subscription set function
+ */
+class subscription_set_test extends DokuWikiTest {
+    /**
+     * Tests, if overwriting subscriptions works even when subscriptions for the same
+     * user exist for two nested namespaces, this is a test for the bug described in FS#2580
+     */
+    function test_overwrite() {
+        subscription_set('admin', ':', 'digest', '123456789');
+        subscription_set('admin', ':wiki:', 'digest', '123456789');
+        subscription_set('admin', ':', 'digest', '1234', true);
+        subscription_set('admin', ':wiki:', 'digest', '1234', true);
+        $subscriptions = subscription_find(':wiki:', array('user' => 'admin'));
+        $this->assertCount(1, $subscriptions[':'], 'More than one subscription saved for the root namespace even though the old one should have been overwritten.');
+        $this->assertCount(1, $subscriptions[':wiki:'], 'More than one subscription saved for the wiki namespace even though the old one should have been overwritten.');
+        $this->assertCount(2, $subscriptions, 'Didn\'t find the expected two subscriptions');
+    }
+}
diff --git a/inc/subscription.php b/inc/subscription.php
index 1bee1152e8abc5812f5840149493c3b45b1ede4d..029d93e664b78b618828b71ac6d195bfd7896fc7 100644
--- a/inc/subscription.php
+++ b/inc/subscription.php
@@ -132,7 +132,7 @@ function subscription_set($user, $page, $style, $data = null,
     // Delete subscription if one exists and $overwrite is true. If $overwrite
     // is false, fail.
     $subs = subscription_find($page, array('user' => $user));
-    if (count($subs) > 0 && array_pop(array_keys($subs)) === $page) {
+    if (count($subs) > 0 && isset($subs[$page])) {
         if (!$overwrite) {
             msg(sprintf($lang['subscr_already_subscribed'], $user,
                         prettyprint_id($page)), -1);