From bcced858d7a6739aa0e1402b876fe5a82a75c2db Mon Sep 17 00:00:00 2001
From: "Committo,Ergo:sum" <esj@rezo.net>
Date: Tue, 18 Aug 2009 13:01:37 +0000
Subject: [PATCH] =?UTF-8?q?D=C3=A9noncer=20avec=20num=C3=A9ro=20de=20ligne?=
 =?UTF-8?q?=20l'argument=20manquant=20dans=20les=20balises=20HTTP=5FHEADER?=
 =?UTF-8?q?,=20PIPELIN,=20SESSION=5FSET=20et=20SET,=20plut=C3=B4t=20que=20?=
 =?UTF-8?q?laisser=20se=20provoquer=20une=20"erreur=20de=20compilation"=20?=
 =?UTF-8?q?sans=20plus=20d'information.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Test à bug:
{{{
#HTTP_HEADER
#PIPELINE
#SESSION_SET
#SET
}}}
---
 ecrire/public/balises.php | 33 ++++++++++++++++++++++-----------
 1 file changed, 22 insertions(+), 11 deletions(-)

diff --git a/ecrire/public/balises.php b/ecrire/public/balises.php
index 45576c1574..92b28bae2f 100644
--- a/ecrire/public/balises.php
+++ b/ecrire/public/balises.php
@@ -701,7 +701,10 @@ function balise_SESSION_dist($p) {
 function balise_SESSION_SET_dist($p) {
 	$_nom = interprete_argument_balise(1,$p);
 	$_val = interprete_argument_balise(2,$p);
-	$p->code = '(include_spip("inc/session") AND session_set('.$_nom.','.$_val.'))';
+	if (!$_nom OR !$_val) {
+		$err_b_s_a = array('zbug_balise_sans_argument', array('balise' => 'SESSION_SET'));
+		erreur_squelette($err_b_s_a, $p);
+	} else 	$p->code = '(include_spip("inc/session") AND session_set('.$_nom.','.$_val.'))';
 
 	$p->interdire_scripts = false;
 
@@ -797,7 +800,10 @@ function balise_REM_dist($p) {
 function balise_HTTP_HEADER_dist($p) {
 
 	$header = interprete_argument_balise(1,$p);
-	$p->code = "'<'.'?php header(\"' . "
+	if (!$header) {
+		$err_b_s_a = array('zbug_balise_sans_argument', array('balise' => 'HTTP_HEADER'));
+		erreur_squelette($err_b_s_a, $p);
+	} else 	$p->code = "'<'.'?php header(\"' . "
 		. $header
 		. " . '\"); ?'.'>'";
 	$p->interdire_scripts = false;
@@ -1014,12 +1020,12 @@ function balise_MODELE_dist($p) {
 // http://doc.spip.org/@balise_SET_dist
 function balise_SET_dist($p){
 	$_nom = interprete_argument_balise(1,$p);
-	$_valeur = interprete_argument_balise(2,$p);
+	$_val = interprete_argument_balise(2,$p);
 
-	if ($_nom AND $_valeur)
-		$p->code = "vide(\$Pile['vars'][$_nom] = $_valeur)";
-	else
-		$p->code = "''";
+	if (!$_nom OR !$_val) {
+		$err_b_s_a = array('zbug_balise_sans_argument', array('balise' => 'SET'));
+		erreur_squelette($err_b_s_a, $p);
+	} else 	$p->code = "vide(\$Pile['vars'][$_nom] = $_val)";
 
 	$p->interdire_scripts = false; // la balise ne renvoie rien
 	return $p;
@@ -1075,10 +1081,15 @@ function balise_DOUBLONS_dist($p) {
 // http://doc.spip.org/@balise_PIPELINE_dist
 function balise_PIPELINE_dist($p) {
 	$_pipe = interprete_argument_balise(1,$p);
-	$_flux = interprete_argument_balise(2,$p);
-	$_flux = $_flux?$_flux:"''";
-	$p->code = "pipeline( $_pipe , $_flux )";
-	$p->interdire_scripts = false;
+	if (!$_pipe) {
+		$err_b_s_a = array('zbug_balise_sans_argument', array('balise' => 'PIPELINE'));
+		erreur_squelette($err_b_s_a, $p);
+	} else {
+		$_flux = interprete_argument_balise(2,$p);
+		$_flux = $_flux?$_flux:"''";
+		$p->code = "pipeline( $_pipe , $_flux )";
+		$p->interdire_scripts = false;
+	}
 	return $p;
 }
 
-- 
GitLab