From f50840eb31c3bc24fa15b967a1a098fe0db31e79 Mon Sep 17 00:00:00 2001
From: Antoine Pitrou <pitrou@free.fr>
Date: Thu, 26 Jun 2003 14:19:36 +0000
Subject: [PATCH] php 4.3.2 et var_recherche

---
 ecrire/inc_surligne.php3 | 19 ++++++++++++-------
 inc-public-global.php3   |  5 +++--
 2 files changed, 15 insertions(+), 9 deletions(-)

diff --git a/ecrire/inc_surligne.php3 b/ecrire/inc_surligne.php3
index e720c555fa..806bf8003b 100644
--- a/ecrire/inc_surligne.php3
+++ b/ecrire/inc_surligne.php3
@@ -5,6 +5,13 @@
 if (defined("_ECRIRE_INC_SURLIGNE")) return;
 define("_ECRIRE_INC_SURLIGNE", "1");
 
+
+// Fonction bidon evitant que PHP optimise les ob_start() vides
+function callback_surligne($texte) {
+	return $texte;
+}
+
+
 // utilise avec ob_start() et ob_get_contents() pour
 // mettre en rouge les mots passes dans $var_recherche
 function surligner_mots($page, $mots) {
@@ -53,7 +60,7 @@ function surligner_mots($page, $mots) {
 		$debut = substr($page, 0, strpos($page, $exp[0])+strlen($exp[0]));
 		$page = substr($page, strlen($debut));
 	} else
-		 $debut = '';
+		$debut = '';
 
 	// Remplacer une occurence de mot maxi par espace inter-tag (max 1 par paragraphe, sauf italiques etc.)
 	// se limiter a 4 remplacements pour ne pas bouffer le CPU
@@ -68,11 +75,10 @@ function surligner_mots($page, $mots) {
 
 // debut et fin, appeles depuis les squelettes
 function debut_surligne($mots, $mode_surligne) {
-
 	switch ($mode_surligne) {
 		case 'auto' :	// on arrive du debut de la page, on ne touche pas au buffer
 			ob_end_flush();
-			ob_start("");
+			ob_start('callback_surligne');
 			$mode_surligne = 'actif';
 			break;
 
@@ -80,12 +86,12 @@ function debut_surligne($mots, $mode_surligne) {
 			$la_page = surligner_mots(ob_get_contents(), $mots);
 			ob_end_clean();
 			echo $la_page;
-			ob_start("");
+			ob_start('callback_surligne');
 			$mode_surligne = 'actif';
 			break;
 
 		case 'inactif' :	// il n'y a pas de buffer
-			ob_start("");
+			ob_start('callback_surligne');
 			$mode_surligne = 'actif';
 			break;
 
@@ -97,13 +103,12 @@ function debut_surligne($mots, $mode_surligne) {
 }
 
 function fin_surligne($mots, $mode_surligne) {
-
 	switch ($mode_surligne) {
 		case 'auto' :	// on arrive du debut de la page, on s'occupe du buffer
 			$la_page = surligner_mots(ob_get_contents(), $mots);
 			ob_end_clean();
 			echo $la_page;
-			ob_start("");
+			ob_start('callback_surligne');
 			$mode_surligne = 'inactif';
 			break;
 
diff --git a/inc-public-global.php3 b/inc-public-global.php3
index 1c24957251..aae4628327 100644
--- a/inc-public-global.php3
+++ b/inc-public-global.php3
@@ -135,8 +135,9 @@ if (!$use_cache) {
 if ($var_recherche AND $flag_ob AND $flag_pcre AND !$flag_preserver AND !$mode_surligne) {
 	include_ecrire("inc_surligne.php3");
 	$mode_surligne = 'auto';
-	ob_start("");
-} else {
+	ob_start('callback_surligne');
+}
+else {
 	unset ($var_recherche);
 	unset ($mode_surligne);
 }
-- 
GitLab