Index: wp-includes/default-filters.php
===================================================================
--- wp-includes/default-filters.php	(revision 24245)
+++ wp-includes/default-filters.php	(working copy)
@@ -136,7 +136,7 @@
 add_filter( 'the_title', 'trim'          );
 add_filter( 'the_title', '_post_formats_title', 10, 2 );
 
-add_filter( 'the_content', 'post_formats_compat', 7 );
+add_filter( 'the_content', 'post_formats_compat', 7, 2 );
 add_filter( 'the_content', 'wptexturize'            );
 add_filter( 'the_content', 'convert_smilies'        );
 add_filter( 'the_content', 'convert_chars'          );
Index: wp-includes/post-template.php
===================================================================
--- wp-includes/post-template.php	(revision 24245)
+++ wp-includes/post-template.php	(working copy)
@@ -160,9 +160,19 @@
  *
  * @param string $more_link_text Optional. Content for when there is more text.
  * @param bool $strip_teaser Optional. Strip teaser content before the more text. Default is false.
+ * @param int $id Optional. A post id. Defaults to the current post when in The Loop, undefined otherwise.
  */
-function the_content( $more_link_text = null, $strip_teaser = false ) {
-	$content = apply_filters( 'the_content', get_the_content( $more_link_text, $strip_teaser ) );
+function the_content( $more_link_text = null, $strip_teaser = false, $id = 0 ) {
+	$post = get_post( $id );
+	/*
+	 * Filter: the_content
+	 *
+	 * param string Post content as returned by get_the_content()
+	 * param int The ID of the post to which the content belongs. This was introduced
+	 *           in 3.6.0 and is not reliably passed by all plugins and themes that
+	 *           directly apply the_content. As such, it is not considered portable.
+	 */
+	$content = apply_filters( 'the_content', get_the_content( $more_link_text, $strip_teaser, $id ), $post->ID );
 	echo str_replace( ']]>', ']]&gt;', $content );
 }
 
@@ -173,12 +183,13 @@
  *
  * @param string $more_link_text Optional. Content for when there is more text.
  * @param bool $stripteaser Optional. Strip teaser content before the more text. Default is false.
+ * @param int $id Optional. A post id. Defaults to the current post when in The Loop, undefined otherwise.
  * @return string
  */
-function get_the_content( $more_link_text = null, $strip_teaser = false ) {
+function get_the_content( $more_link_text = null, $strip_teaser = false, $id = 0 ) {
 	global $more, $page, $pages, $multipage, $preview;
 
-	$post = get_post();
+	$post = get_post( $id );
 
 	if ( null === $more_link_text )
 		$more_link_text = __( '(more&hellip;)' );
@@ -187,7 +198,7 @@
 	$has_teaser = false;
 
 	// If post password required and it doesn't match the cookie.
-	if ( post_password_required() )
+	if ( post_password_required( $post ) )
 		return get_the_password_form();
 
 	if ( $page > count( $pages ) ) // if the requested page doesn't exist
@@ -1225,10 +1236,10 @@
  *
  * @since 1.0.0
  * @uses apply_filters() Calls 'the_password_form' filter on output.
- *
+ * @param int $id Optional. A post id. Defaults to the current post when in The Loop, undefined otherwise.
  * @return string HTML content for password form for password protected post.
  */
-function get_the_password_form() {
+function get_the_password_form( $id = 0 ) {
 	$post = get_post();
 	$label = 'pwbox-' . ( empty($post->ID) ? rand() : $post->ID );
 	$output = '<form action="' . esc_url( site_url( 'wp-login.php?action=postpass', 'login_post' ) ) . '" method="post">
Index: wp-includes/comment.php
===================================================================
--- wp-includes/comment.php	(revision 24245)
+++ wp-includes/comment.php	(working copy)
@@ -1749,7 +1749,7 @@
 	}
 
 	if ( empty($post->post_excerpt) )
-		$excerpt = apply_filters('the_content', $post->post_content);
+		$excerpt = apply_filters('the_content', $post->post_content, $post->ID);
 	else
 		$excerpt = apply_filters('the_excerpt', $post->post_excerpt);
 	$excerpt = str_replace(']]>', ']]&gt;', $excerpt);
