El problema está en los $db->free($query); y en la consulta.
Código PHP:
Ver original$query = $db->query("SELECT p.post_id, p.post_user, p.post_category, p.post_title, p.post_date, p.post_comments, p.post_puntos, p.post_private, u.user_name, c.c_nombre, c.c_seo, c.c_img FROM p_posts AS p LEFT JOIN u_miembros AS u ON p.post_user = u.user_id LEFT JOIN p_categorias AS c ON c.cid = p.post_category WHERE p.post_status = 0 AND p.post_id = {$id} LIMIT 1");
Si falla esa consulta le pasa
false al método free, como mysql_free_result está esperando un resultset te da ese error, trata de imprimir los errores de esa consulta.