Index: wp-includes/link-template.php
===================================================================
--- wp-includes/link-template.php	(revision 15489)
+++ wp-includes/link-template.php	(working copy)
@@ -874,18 +874,10 @@
  * @return string
  */
 function get_edit_comment_link( $comment_id = 0 ) {
-	$comment = &get_comment( $comment_id );
-	$post = &get_post( $comment->comment_post_ID );
+	if ( !current_user_can('edit_comment', $comment_id) )
+		return;
 
-	if ( $post->post_type == 'page' ) {
-		if ( !current_user_can( 'edit_page', $post->ID ) )
-			return;
-	} else {
-		if ( !current_user_can( 'edit_post', $post->ID ) )
-			return;
-	}
-
-	$location = admin_url('comment.php?action=editcomment&amp;c=') . $comment->comment_ID;
+	$location = admin_url('comment.php?action=editcomment&amp;c=') . $comment_id;
 	return apply_filters( 'get_edit_comment_link', $location );
 }
 
@@ -900,15 +892,10 @@
  * @return string|null HTML content, if $echo is set to false.
  */
 function edit_comment_link( $link = null, $before = '', $after = '' ) {
-	global $comment, $post;
+	global $comment;
 
-	if ( $post->post_type == 'page' ) {
-		if ( !current_user_can( 'edit_page', $post->ID ) )
-			return;
-	} else {
-		if ( !current_user_can( 'edit_post', $post->ID ) )
-			return;
-	}
+	if ( !current_user_can('edit_comment', $comment->comment_ID) )
+		return;
 
 	if ( null === $link )
 		$link = __('Edit This');
Index: wp-includes/capabilities.php
===================================================================
--- wp-includes/capabilities.php	(revision 15489)
+++ wp-includes/capabilities.php	(working copy)
@@ -990,6 +990,14 @@
 		else
 			$caps[] = 'read_private_pages';
 		break;
+	case 'edit_comment':
+		$caps[] = 'edit_published_posts';
+
+		$comment = get_comment( $args[0] );
+
+		if ( $comment->user_id != $user_id )
+			$caps[] = 'moderate_comments';
+		break;
 	case 'unfiltered_upload':
 		if ( defined('ALLOW_UNFILTERED_UPLOADS') && ALLOW_UNFILTERED_UPLOADS && ( !is_multisite() || is_super_admin( $user_id ) )  )
 			$caps[] = $cap;
Index: wp-admin/comment.php
===================================================================
--- wp-admin/comment.php	(revision 15489)
+++ wp-admin/comment.php	(working copy)
@@ -60,8 +60,8 @@
 	if ( !$comment = get_comment( $comment_id ) )
 		comment_footer_die( __('Oops, no comment with this ID.') . sprintf(' <a href="%s">'.__('Go back').'</a>!', 'javascript:history.go(-1)') );
 
-	if ( !current_user_can('edit_post', $comment->comment_post_ID) )
-		comment_footer_die( __('You are not allowed to edit comments on this post.') );
+	if ( !current_user_can('edit_comment', $comment_id) )
+		comment_footer_die( __('You are not allowed to edit this comment.') );
 
 	if ( 'trash' == $comment->comment_approved )
 		comment_footer_die( __('This comment is in the Trash. Please move it out of the Trash if you want to edit it.') );
