diff --git a/ecrire/action/editer_article.php b/ecrire/action/editer_article.php
index dcbaf410d7b10c69b29f03d2b0fcd82d8c10331d..87f22b8f37eb0bb3fd751a0d672b7224a597d088 100644
--- a/ecrire/action/editer_article.php
+++ b/ecrire/action/editer_article.php
@@ -140,8 +140,8 @@ function revisions_articles ($id_article, $c=false) {
 	if ($r) {
 		spip_query("UPDATE spip_articles SET date_modif=NOW() WHERE id_article="._q($id_article));
 	}
-	
-	return $r;
+
+	return ''; // pas d'erreur
 }
 
 
@@ -159,6 +159,7 @@ function instituer_article($id_article, $c) {
 	$row = spip_fetch_array($s);
 	$id_rubrique = $row['id_rubrique'];
 	$statut_ancien = $statut = $row['statut'];
+	$champs = array();
 
 	$s = _request('statut', $c);
 	if ($s AND _request('statut', $c) != $statut) {
@@ -263,6 +264,8 @@ function instituer_article($id_article, $c) {
 			'data' => $data
 		)
 	);
+
+	return ''; // pas d'erreur
 }
 
 
@@ -308,6 +311,8 @@ function article_referent ($id_article, $c) {
 	else {
 		spip_query("UPDATE spip_articles SET id_trad = $id_lier WHERE id_article = $id_article");
 	}
+
+	return ''; // pas d'erreur
 }
 
 
diff --git a/ecrire/action/editer_breve.php b/ecrire/action/editer_breve.php
index d934e102fb7f905d34e609398705970d18fe4d75..85ec460934530a4435dae1131ab75f2bef99dcbf 100644
--- a/ecrire/action/editer_breve.php
+++ b/ecrire/action/editer_breve.php
@@ -74,7 +74,6 @@ function insert_breve($id_rubrique) {
 
 
 // Enregistre une revision de breve
-// $new indique si c'est un INSERT
 // $c est un contenu (par defaut on prend le contenu via _request())
 // http://doc.spip.org/@revisions_breves
 function revisions_breves ($id_breve, $c=false) {
diff --git a/ecrire/inc/modifier.php b/ecrire/inc/modifier.php
index 233e4bb6eaf57df058b2109276827d25e01d63f8..74e13f72c97c63cdc71cc78d3d39bb7fc4bf4455 100644
--- a/ecrire/inc/modifier.php
+++ b/ecrire/inc/modifier.php
@@ -113,19 +113,19 @@ function revision_document($id_document, $c=false) {
 		),
 		$c);
 
+	return ''; // pas d'erreur
 }
 
 
 // http://doc.spip.org/@revision_auteur
 function revision_auteur($id_auteur, $c=false) {
 
-	return modifier_contenu('auteur', $id_auteur,
+	modifier_contenu('auteur', $id_auteur,
 		array(
 			'champs' => array('nom', 'bio', 'pgp', 'nom_site', 'lien_site', 'email'),
 			'nonvide' => array('nom' => _T('ecrire:item_nouvel_auteur'))
 		),
 		$c);
-
 }
 
 // Quand on edite un forum, on tient a conserver l'original
@@ -134,7 +134,7 @@ function conserver_original($id_forum) {
 	$s = spip_query("SELECT id_forum FROM spip_forum WHERE id_parent="._q($id_forum)." AND statut='original'");
 
 	if (spip_num_rows($s))
-		return true;
+		return ''; // pas d'erreur
 
 	// recopier le forum
 	$t = spip_fetch_array(
@@ -145,17 +145,17 @@ function conserver_original($id_forum) {
 	AND spip_query("INSERT spip_forum (date_heure,titre,texte,auteur,email_auteur,nom_site,url_site,ip,id_auteur,idx,id_thread) VALUES (".join(',',array_map('_q', $t)).")")) {
 		$id_copie = spip_insert_id();
 		spip_query("UPDATE spip_forum SET id_parent="._q($id_forum).", statut='original' WHERE id_forum=$id_copie");
-		return true;
+		return ''; // pas d'erreur
 	}
 
-	return false;
+		return '&erreur';
 }
 
 // http://doc.spip.org/@revision_auteur
 function revision_forum($id_forum, $c=false) {
 
-	if (!conserver_original($id_forum)) {
-		spip_log("erreur de sauvegarde de l'original");
+	if ($err = conserver_original($id_forum)) {
+		spip_log("erreur de sauvegarde de l'original, $err");
 		return;
 	}
 
@@ -171,8 +171,6 @@ function revision_forum($id_forum, $c=false) {
 	if ($r) {
 		spip_query("UPDATE spip_forum SET ip="._q($GLOBALS['ip']).", id_auteur="._q($GLOBALS['auteur_session']['id_auteur'])." WHERE id_forum="._q($id_forum));
 	}
-
-	return $r;
 }
 
 
diff --git a/ecrire/inc/revisions.php b/ecrire/inc/revisions.php
index f2c8992ca9726765c4e665c62dd8f6b8917c201a..743cf5df1a12ac6f785dddba4768a4654215e271 100644
--- a/ecrire/inc/revisions.php
+++ b/ecrire/inc/revisions.php
@@ -452,6 +452,8 @@ function ajouter_version($id_article, $champs, $titre_version = "", $id_auteur)
 
 	spip_release_lock($lock);
 
+	spip_log("creation version $id_version_new de l'article $id_article $titre_version");
+
 	return $id_version_new;
 }
 
@@ -548,7 +550,6 @@ function enregistrer_premiere_revision($x) {
 			}
 		}
 	}
-
 	return $x;
 }
 
@@ -567,7 +568,7 @@ function enregistrer_nouvelle_revision($x) {
 		if (count($champs))
 			ajouter_version($x['args']['id_objet'], $champs, '', $GLOBALS['auteur_session']['id_auteur']);
 	}
-	
+
 	return $x;
 }
 
diff --git a/ecrire/inc/utils.php b/ecrire/inc/utils.php
index da4a128f73d24c5d77bea8dd4b17a93323b52c29..d965714c64a9a3f84dca21534013295f6d57d70d 100644
--- a/ecrire/inc/utils.php
+++ b/ecrire/inc/utils.php
@@ -98,6 +98,7 @@ function include_spip($f, $include = true) {
 // utilisee dans le script pipeline precompile
 // http://doc.spip.org/@minipipe
 function minipipe($fonc,$val){
+
 	// fonction
 	if (function_exists($fonc))
 		$val = call_user_func($fonc, $val);
@@ -147,8 +148,9 @@ function pipeline($action,$val) {
 	}
 	// si le flux est une table qui encapsule donnees et autres
 	// on ne ressort du pipe que les donnees
-	if (is_array($val) && isset($val['data']))
-			$val = $val['data'];
+	// array_key_exists pour php 4.1.0
+	if (is_array($val) && in_array('data', array_keys($val)))
+		$val = $val['data'];
 	return $val;
 }