diff --git a/forum_access.module b/forum_access.module
index 077b1e6..5aa19af 100644
--- a/forum_access.module
+++ b/forum_access.module
@@ -424,7 +424,7 @@ function forum_access_link_alter(&$links, $node, $comment = NULL) {
       'delete' => 'comment_delete',
     );
     foreach ($required_keys as $access => $key) {
-      if (!forum_access_access($tid, $access)) {
+      if (!forum_access_access($tid, $access) && !($access == 'update' && comment_access('edit', $comment))) {
         unset($links[$required_keys[$access]]);
         unset($required_keys[$access]);
       }
diff --git a/forum_access.test b/forum_access.test
index d9c2d7f..6bf5291 100644
--- a/forum_access.test
+++ b/forum_access.test
@@ -193,7 +193,10 @@ class ForumAccessTestCase extends DrupalWebTestCase {
           if (intval($user_comment_id) == 0) {
             $user_comment_id = $admin_comment_id;
           }
-          $user_reply_id = $this->testForumAccessCreateReply($user_topic_id, $user_comment_id);
+          $user_reply_id = 0;
+          if ($this->testForumAccessCreateReply($user_topic_id, $user_comment_id)) {
+            $user_reply_id = $user_comment_id + 1;
+          }
 
           // edit
           if ($user_topic_id != $admin_topic_id) {
@@ -202,6 +205,9 @@ class ForumAccessTestCase extends DrupalWebTestCase {
           if ($user_comment_id != $admin_comment_id) {
             $this->testForumAccessUpdateComment($user_topic_id, $user_comment_id);
           }
+          if ($user_reply_id) {
+            $this->testForumAccessUpdateComment($user_topic_id, $user_reply_id);
+          }
           $this->testForumAccessUpdateTopic($admin_topic_id);
           $this->testForumAccessUpdateComment($admin_topic_id, $admin_comment_id);
 
@@ -241,6 +247,7 @@ class ForumAccessTestCase extends DrupalWebTestCase {
      * forum permissions: 'create forum topics', 'delete any forum topic', 'delete own forum topics', 'edit any forum topic', 'edit own forum topics'
      */
 
+    global $user;
     $current_user_is_content_owner = FALSE;
 
     if (!$this->loggedInUser) {
@@ -423,6 +430,17 @@ class ForumAccessTestCase extends DrupalWebTestCase {
               return TRUE;
             }
           }
+          elseif ($current_user_is_content_owner) {
+            session_save_session(FALSE);
+            $user_saved = $user;
+            $user = user_load($comment->uid);
+            $allow_editing_own_comment = comment_access('edit', $comment);
+            $user = $user_saved;
+            session_save_session(TRUE);
+            if ($allow_editing_own_comment) {
+              return TRUE;
+            }
+          }
           return FALSE;
         }
         break;
@@ -923,8 +941,9 @@ class ForumAccessTestCase extends DrupalWebTestCase {
         $this->drupalPost(NULL, $comment_options, t('Save'));
         if ($allowed) {
           if ($this->assertNoText("not authorized", t('@user should be allowed to reply on this comment: @page', array('@user' => ($this->loggedInUser ? t('The user') : t('Anonymous')), '@page' => $this->getUrl())))) {
-            preg_match_all('/node\/(?<topic_id>\d+)#comment-(?<comment_id>\d+)/', $this->url, $matches);
-            return (array_key_exists('comment_id', $matches) ? intval($matches['comment_id']) : 0);
+            //preg_match_all('/node\/(?<topic_id>\d+)#comment-(?<comment_id>\d+)/', $this->url, $matches);
+            //return (array_key_exists('comment_id', $matches) ? intval($matches['comment_id']) : 0);
+            return TRUE;
           }
           else {
             $this->testForumAccessDumpDebugInfo('comment', $comment_id);
@@ -933,12 +952,13 @@ class ForumAccessTestCase extends DrupalWebTestCase {
         else {
           if (!$this->assertText("not authorized", t('@user should NOT be allowed to reply on this comment: @page', array('@user' => ($this->loggedInUser ? t('The user') : t('Anonymous')), '@page' => $this->getUrl())))) {
             $this->testForumAccessDumpDebugInfo('comment', $comment_id);
-            preg_match_all('/node\/(?<topic_id>\d+)#comment-(?<comment_id>\d+)/', $this->url, $matches);
-            return (array_key_exists('comment_id', $matches) ? intval($matches['comment_id']) : 0);
+            //preg_match_all('/node\/(?<topic_id>\d+)#comment-(?<comment_id>\d+)/', $this->url, $matches);
+            //return (array_key_exists('comment_id', $matches) ? intval($matches['comment_id']) : 0);
           }
         }
       }
     }
+    return FALSE;
   }
 
   /**
