Index: wp-includes/pluggable.php
===================================================================
--- wp-includes/pluggable.php	(revision 8561)
+++ wp-includes/pluggable.php	(working copy)
@@ -1509,13 +1509,12 @@
  * @return string Empty string if strings are equivalent or HTML with differences.
  */
 function wp_text_diff( $left_string, $right_string, $args = null ) {
+	if ( defined( 'WP_INCLUDE_PATH_DISABLED' ) )
+		return '';
+
 	$defaults = array( 'title' => '', 'title_left' => '', 'title_right' => '' );
 	$args = wp_parse_args( $args, $defaults );
 
-	// PEAR Text_Diff is lame; it includes things from include_path rather than it's own path.
-	// Not sure of the ramifications of disttributing modified code.
-	ini_set('include_path', '.' . PATH_SEPARATOR . ABSPATH . WPINC );
-
 	if ( !class_exists( 'WP_Text_Diff_Renderer_Table' ) )
 		require( ABSPATH . WPINC . '/wp-diff.php' );
 
@@ -1534,8 +1533,6 @@
 	$renderer  = new WP_Text_Diff_Renderer_Table();
 	$diff = $renderer->render($text_diff);
 
-	ini_restore('include_path');
-
 	if ( !$diff )
 		return '';
 
Index: wp-settings.php
===================================================================
--- wp-settings.php	(revision 8561)
+++ wp-settings.php	(working copy)
@@ -182,6 +182,20 @@
  */
 define('WPINC', 'wp-includes');
 
+if ( constant('WP_POST_REVISIONS') ) {
+	/*
+	 * PEAR Text_Diff depends on the include path matching its directory
+	 * structure. This prevents modifying source code and maintaining the
+	 * modifications when the package is updated.
+	 */
+	if ( function_exists( 'set_include_path' ) )
+		set_include_path( get_include_path() . PATH_SEPARATOR . ABSPATH . WPINC );
+	else if ( function_exists( 'ini_set' ) )
+		ini_set( 'include_path',  ini_get('include_path') . PATH_SEPARATOR . ABSPATH . WPINC );
+	else
+		define('WP_INCLUDE_PATH_DISABLED', true);
+}
+
 if ( !defined('WP_LANG_DIR') ) {
 	/**
 	 * Stores the location of the language directory. First looks for language folder in WP_CONTENT_DIR
