From 58e1bc2fe74e5358085c475505aec89be1c8cf3c Mon Sep 17 00:00:00 2001
From: Fil <fil@rezo.net>
Date: Mon, 19 Aug 2002 19:19:51 +0000
Subject: [PATCH] =?UTF-8?q?Correction=20bug=20</li>=20mal=20ferm=C3=A9=20s?=
 =?UTF-8?q?ur=20certaines=20listes?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 ecrire/inc_texte.php3 | 16 +++++++++++-----
 1 file changed, 11 insertions(+), 5 deletions(-)

diff --git a/ecrire/inc_texte.php3 b/ecrire/inc_texte.php3
index 546d583ae1..a463e419af 100644
--- a/ecrire/inc_texte.php3
+++ b/ecrire/inc_texte.php3
@@ -552,7 +552,7 @@ function typo($letexte) {
 
 
 //
-// Traitement des listes
+// Traitement des listes (merci a Michael Parienti)
 //
 function traiter_listes ($texte) {
 	$parags = split ("\n[[:space:]]*\n", $texte);
@@ -582,21 +582,27 @@ function traiter_listes ($texte) {
 				$change_type = ($type AND ($type <> $nouv_type)) ? 1 : 0;
 				$type = $nouv_type;
 
-				if ($niveau == $profond && !$change_type) {
-					$ajout = "</li>";
-				}
+				// d'abord traiter les descentes
 				while ($niveau > $profond - $change_type) {
 					$ajout .= $pile_li[$niveau];
 					$ajout .= $pile_type[$niveau];
-					$niveau --;
 					if (!$change_type)
 						unset ($pile_li[$niveau]);
+					$niveau --;
 				}
+
+				/// puis les identites (y compris en fin de descente)
+				if ($niveau == $profond && !$change_type) {
+					$ajout .= "</li>";
+				}
+
+				// puis les montees (y compris apres une descente un cran trop bas)
 				while ($niveau < $profond) {
 					$niveau ++;
 					$ajout .= "<$type class=\"spip\">";
 					$pile_type[$niveau] = "</$type>";
 				}
+
 				$ajout .= "<li class=\"spip\">";
 				$pile_li[$profond] = "</li>";
 			}
-- 
GitLab