diff --git a/ecrire/inc_index.php3 b/ecrire/inc_index.php3
index 85714fc286eeb34a97b957103d4eb6c16eb480dc..075f87f8075a3d91cf65c46f05e7f4994a4f47a5 100644
--- a/ecrire/inc_index.php3
+++ b/ecrire/inc_index.php3
@@ -81,6 +81,7 @@ function indexer_objet($type, $id_objet, $forcer_reset = true, $full = true) {
 
 	if (!$id_objet OR (!$forcer_reset AND deja_indexe($type, $id_objet))) return;
 
+	spip_log("indexation $type $id_objet");
 	$index = '';
 	$mots = "INSERT IGNORE INTO spip_index_dico (hash, dico) VALUES (0,'')";
 
diff --git a/inc-public-global.php3 b/inc-public-global.php3
index af53f5592837cdb103d9c31f109b9d96b0d834ea..0ab3339447e372762eff9a3c9d8ae078d05d7af8 100644
--- a/inc-public-global.php3
+++ b/inc-public-global.php3
@@ -328,15 +328,16 @@ if (lire_meta('activer_moteur') == 'oui') {
 			include_ecrire("inc_texte.php3");
 			include_ecrire("inc_filtres.php3");
 			include_ecrire("inc_index.php3");
-			$suite = file($fichier_index);
-			$s = $suite[0];
-			$f = fopen($fichier_index, 'w');
+			if ($s = sizeof($suite = file($fichier_index)))
+				$s = $suite[rand(0,$s)];
+			$pid = @getmypid();
+			$f = fopen($fichier_index.".tmp-$pid", 'w');
 			while (list(,$ligne) = each($suite))
 				if ($ligne <> $s)
 					fwrite($f, $ligne);
 			fclose($f);
+			@rename($fichier_index.".tmp-$pid",$fichier_index);
 			$s = explode(' ', trim($s));
-			spip_log("indexation $s[0] $s[1]");
 			indexer_objet($s[0], $s[1], false);
 			$timeout = true;
 		}