id,summary,reporter,owner,description,type,status,priority,milestone,component,version,severity,resolution,keywords,cc,focuses 13753,get_page() breaking $post when it's called with empty parameter,shidouhikari,westi,"( get_page() and get_post() are both in \wp-includes\post.php, in 3.0 RC1 they are in lines 2866 and 356 ) As we know, global $post should always be an object, but in a rare situation it gets broken and stores a post ID. That happens when the funtion get_page() is called and its first parameter, &$page, has a value that makes empty($page) true. When that happens and $GLOBALS[ 'post'] was correcly set earlier and has a valid $GLOBALS[ 'post']->ID, the function get_page() calls get_post(), so that it returns the page data formatted according to $output and $filter parameters. The problem is that get_post() receives &$post as reference, reference to the global variable in this case. In line 370, if $post is an object, it's overridden to its ID, because it's the ID that will be required later. After that the variable $post is never touched again, and get_post() returns leaving $GLOBALS[ 'post'] set as an int refering to the post ID, and not the post object. get_page() also returns doing nothing about it. To replicate the bug, put the following code anywhere that will run when is_singular() is true and $post has already been set (probably by The Loop), regardless if it's a post or page. I didn't test with custom types. {{{ $post begin (should be an object of type stdClass):

'; var_dump($post); $post_id = $post->ID; echo '

Saving post ID into $post_id:

'; var_dump($post_id); $getPost = get_post($null); echo '

get_post(null):

'; var_dump($getPost); echo '

$post after get_post(null) (should be of type stdClass):

'; var_dump($post); $getPage = get_page($null); echo '

get_page(null):

'; var_dump($getPage); echo '

$post after get_page(null) (should be of type stdClass, but now it\' Integer):

'; var_dump($post); ?> }}}",defect (bug),closed,normal,3.0,General,3.0,normal,fixed,has-patch commit,,