diff --git a/ecrire/inc_version.php3 b/ecrire/inc_version.php3
index e8c271b2cf76524e1da3f4c0ae704723d7361d61..3026040525ca188533e27f7c037f8f68efe320fb 100644
--- a/ecrire/inc_version.php3
+++ b/ecrire/inc_version.php3
@@ -818,13 +818,15 @@ if (LOCK_UN!=3) {
 	define ('LOCK_UN', 3);
 	define ('LOCK_NB', 4);
 }
-function test_flock ($dir, $fp=false) {
+function test_flock ($fichier, $fp=false) {
 	static $flock = array();
 	global $flag_flock;
 	if (!$flag_flock
 	OR $os_serveur == 'windows') // sous win rename() plante avec fopen()
 		return false;
 
+	preg_match('|(.*)/([^/]*)$|', $fichier, $match);
+	$dir = $match[1];
 	if (!$dir) $dir = '.';
 
 	// premier appel pour ce $dir ?
@@ -849,10 +851,7 @@ function test_flock ($dir, $fp=false) {
 // Si flock ne marche pas dans ce repertoire ou chez cet hebergeur,
 // on renvoie OK pour ne pas bloquer
 function spip_flock($filehandle, $mode, $fichier) {
-	preg_match('|(.*)/([^/]*)$|', $fichier, $match);
-	$dir = $match[1];
-
-	if (!test_flock($dir))
+	if (!test_flock($fichier))
 		return true;
 
 	$r = flock($filehandle, $mode);
@@ -946,7 +945,7 @@ function ecrire_fichier ($fichier, $contenu) {
 
 	if ($ft = @$fopen($fichiertmp, 'wb')) {
 		// on en profite pour tester flock()
-		$flock = test_flock($dir, $ft);
+		$flock = test_flock($fichiertmp, $ft);
 		$s = @$fputs($ft, $contenu, $a = strlen($contenu));
 		@$fclose($ft);
 		$ok = ($s == $a);
@@ -986,12 +985,14 @@ function supprimer_fichier ($fichier) {
 	if (!@file_exists($fichier))
 		return false;
 
+	if (test_flock($fichier))
 	if ($fl = @fopen($fichier, 'r')) {
 		while(!spip_flock($fl, LOCK_EX, $fichier));
 		spip_flock($fl, LOCK_UN, $fichier);
 		@fclose($fl);
-		@unlink($fichier);
 	}
+
+	@unlink($fichier);
 }
 
 //