diff --git a/ecrire/inc/filtres.php b/ecrire/inc/filtres.php
index db3e6d907c6e78d9d599131352685a56f1bb2f57..6f19f9fed4cee804754ff74619a3c5305de97bab 100644
--- a/ecrire/inc/filtres.php
+++ b/ecrire/inc/filtres.php
@@ -2771,6 +2771,9 @@ function pagination_item($num, $txt, $pattern, $lien_base, $debut, $ancre) {
 // on peut la surcharger en definissant dans mes_fonctions :
 // function pagination($total, $nom, $pas, $liste) {...}
 //
+
+define('PAGINATION_MAX', 10);
+
 function calcul_pagination($total, $nom, $pas, $liste = true) {
 	static $ancres = array();
 	$bloc_ancre = "";
@@ -2781,7 +2784,6 @@ function calcul_pagination($total, $nom, $pas, $liste = true) {
 		return pagination($total, $nom, $pas, $liste);
 
 	$separateur = ' | ';
-	define('PAGINATION_MAX', 10);
 
 	$debut = 'debut'.$nom;
 
diff --git a/ecrire/inc/texte.php b/ecrire/inc/texte.php
index 1ae60347cb32bcdd7fe64e16d8df388a801b5b99..80eb565a54f0fa6159c381905e88906842a8a304 100644
--- a/ecrire/inc/texte.php
+++ b/ecrire/inc/texte.php
@@ -313,6 +313,7 @@ function couper($texte, $taille=50) {
 // prendre <intro>...</intro> sinon couper a la longueur demandee
 function couper_intro($texte, $long) {
 	$texte = extraire_multi(eregi_replace("(</?)intro>", "\\1intro>", $texte)); // minuscules
+	$intro = '';
 	while ($fin = strpos($texte, "</intro>")) {
 		$zone = substr($texte, 0, $fin);
 		$texte = substr($texte, $fin + strlen("</intro>"));
@@ -328,9 +329,7 @@ function couper_intro($texte, $long) {
 	}
 
 	// supprimer un eventuel chapo redirecteur =http:/.....
-	$intro = preg_replace(',^=[^[:space:]]+,','',$intro);
-
-	return $intro;
+	return preg_replace(',^=[^[:space:]]+,','',$intro);
 }
 
 
diff --git a/ecrire/public/compiler.php b/ecrire/public/compiler.php
index 2ec2f31047c630098a7fbc80294c385585ce4251..2657d2b6972b37953bb183c649dc8bd57916a884 100644
--- a/ecrire/public/compiler.php
+++ b/ecrire/public/compiler.php
@@ -631,12 +631,12 @@ function public_compiler_dist($squelette, $nom, $gram, $sourcefile) {
 	foreach($boucles as $idb => $boucle) {
 		if (($boucle->type_requete == 'documents') && $boucle->doublons)
 			{ $descr['documents'] = true; break; }
-		$boucles[$idb]->descr = &$descr;
 	}
 	// Commencer par reperer les boucles appelees explicitement 
 	// car elles indexent les arguments de maniere derogatoire
 	foreach($boucles as $id => $boucle) { 
 		if ($boucle->type_requete == 'boucle') {
+			$boucles[$id]->descr = &$descr;
 			$rec = &$boucles[$boucle->param[0]];
 			if (!$rec) {
 				return array(_T('zbug_info_erreur_squelette'),
@@ -656,6 +656,7 @@ function public_compiler_dist($squelette, $nom, $gram, $sourcefile) {
 	foreach($boucles as $id => $boucle) { 
 		$type = $boucle->type_requete;
 		if ($type != 'boucle') {
+		  $boucles[$id]->descr = &$descr;
 		  if ($x = $table_des_tables[$type]) {
 		    $boucles[$id]->id_table = $x;
 		    $boucles[$id]->primary = $tables_principales["spip_$x"]['key']["PRIMARY KEY"];
diff --git a/ecrire/public/composer.php b/ecrire/public/composer.php
index 9c1f6d475d1742ff215b67747a30a1e93b0271e2..f01ffc0d2a78e40b23d981ba74b8d5e5a223eec8 100644
--- a/ecrire/public/composer.php
+++ b/ecrire/public/composer.php
@@ -311,7 +311,7 @@ function calcul_exposer ($id, $type, $reference) {
 	}
 
 	// And the winner is...
-	return isset($exposer[$type]) ? $exposer[$type][$id] : '';
+	return isset($exposer[$type]) ? isset($exposer[$type][$id]) : '';
 }
 
 function lister_objets_avec_logos ($type) {
diff --git a/ecrire/public/criteres.php b/ecrire/public/criteres.php
index 5f121ae0d1929f5d2630bbdc3cf40dd005655c67..5b763b3136b68b4b586faa37e88a2ad7d809dd5c 100644
--- a/ecrire/public/criteres.php
+++ b/ecrire/public/criteres.php
@@ -51,7 +51,7 @@ function critere_doublons_dist($idb, &$boucles, $crit) {
 	$boucle = &$boucles[$idb];
 	if (!$boucle->primary)
 		erreur_squelette(_L('doublons sur une table sans index'), $param);
-	$nom = calculer_liste($crit->param[0], array(), $boucles, $boucles[$idb]->id_parent);
+	$nom = !isset($crit->param[0]) ? "''" : calculer_liste($crit->param[0], array(), $boucles, $boucles[$idb]->id_parent);
 	// mettre un tableau pour que ce ne soit pas vu comme une constante
 	$boucle->where[]= array("calcul_mysql_in('".$boucle->id_table . '.' . $boucle->primary .
 	  "', " .
@@ -97,10 +97,9 @@ function critere_debut_dist($idb, &$boucles, $crit) {
 function critere_pagination_dist($idb, &$boucles, $crit) {
 
 	// definition de la taille de la page
-	$pas = calculer_liste($crit->param[0], array(),
-		$boucles, $boucles[$idb]->id_parent);
+	$pas = !isset($crit->param[0]) ? "''" : calculer_liste($crit->param[0], array(), $boucles, $boucles[$idb]->id_parent);
 
-	$pas = "((\$a = intval($pas)) ? \$a : 10)"; # par defaut c'est 10
+	$pas = ($pas== "''") ? '10' : "((\$a = intval($pas)) ? \$a : 10)";
 
 	$boucle = &$boucles[$idb];
 	$boucle->mode_partie = 'p+';