Valider ff1296e9 rédigé par esj's avatar esj
Parcourir les fichiers

Erreur de boucle récursive non dénoncée (Ben pour spip-pphb)

parent 1172591d
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+1 −1
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -5,7 +5,7 @@
class Boucle {
	var $type = 'boucle';
	var $id_boucle, $id_parent;
	var $avant, $cond_avant, $milieu, $cond_apres, $cond_altern, $apres;
	var $cond_avant, $milieu, $cond_apres, $cond_altern;
	var $commande;
	var $lang_select;
	var $type_requete;
+11 −2
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -14,6 +14,7 @@ include_local("inc-form-squel.php3");
include_local("inc-vrac-squel.php3");
include_local("inc-index-squel.php3");
include_local("inc-text-squel.php3");
include_local("inc-debug.php3");

# Produit le corps PHP d'une boucle Spip,
# essentiellement une boucle while (ou une double en cas de hierarchie)
@@ -185,7 +186,7 @@ function calculer_parties($partie, $mode_partie, $total_parties)

function calculer_liste($tableau, $prefix, $id_boucle, $niv, $rec, &$boucles, $id_mere)
{
	if (!$tableau) return array("''",'');
	if ((!$tableau)) return array("''",'');
	$texte = '';
	$exp = "";
	$process_ins = false;
@@ -319,8 +320,16 @@ function calculer_squelette($squelette, $nom, $gram) {
	{ 
	  if ($boucle->type_requete == 'boucle')
	    {
	      $rec = $boucles[$boucle->param];
	      if (!$rec)
		{
		  include_local("inc-debug-squel.php3");
		  erreur_squelette(_L('Boucle rcursive non dfinie'), '',
				   $boucle->param);
		  exit;
		  } 
	      $boucles[$id]->return =
		calculer_liste(array($boucles[$boucle->param]),
		calculer_liste(array($rec),
			       $nom,
			       $boucle->param,
			       1,
+35 −26
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -11,7 +11,7 @@ define("_INC_DEBUG", "1");

function affval($val) {

	echo entites_html($val);
	echo "“" . entites_html($val) . "”";

}

@@ -22,13 +22,29 @@ function afftable($table) {
	echo "<UL>";
	while (list($key, $val) = each($table)) {
		echo "<LI>";
		affobject($val);
		echo "</LI>";
	}
	echo "</UL>\n";
}


function affobject($val)
{
  if (!is_object($val))
    affval($val);
  else
    switch ($val->type) {
		case 'boucle':
			echo "<font color='red'><b>Boucle".$val->id_boucle."</b>: ".entites_html($val->commande);
			echo "<br><i><small>".entites_html($val->requete)."</small></i></font>";
			echo "<font color='red'><b>Boucle".$val->id_boucle."</b>: ".affval($val->commande);
			echo "<br><i><small>".affval($val->requete)."</small></i></font>";
			break;
		case 'texte':
			echo entites_html($val->texte);
			echo affval($val->texte);
			break;
		case 'include':
			echo affval($val->fichier);
			afftable($params);
			break;
    		case 'champ':
			echo "<font color='blue'><i>#".$val->nom_champ;
@@ -41,28 +57,21 @@ function afftable($table) {
			echo "</li></ul>";
			break;
    }
		echo "</LI>";
	}
	echo "</UL>\n";
}


function affboucle($val) {
	echo "<hr>";
	echo "<b>Boucle".$val->id_boucle."</b>";
	echo "<ul><li>";
	echo afftable($val->avant);
	echo "</li><li>";
	echo afftable($val->cond_avant);
	echo "</li><li>";
	echo afftable($val->milieu);
	echo "</li><li>";
	echo afftable($val->cond_apres);
	echo "</li><li>";
	echo afftable($val->cond_altern);
	echo "</li><li>";
	echo affval($val->fin);
	echo "</li></ul>";
	echo "\n";
	echo "<hr><ul>";
	foreach(get_object_vars($val) as $k => $v)
	  {
	    echo "<li><b>$k : </b>";
	    if (is_array($v)) 
	      if (!$v) echo "<i>Tableau vide</i>"; else afftable($v); 
	    elseif (is_object($v))
	      echo afftable($v);
	    else affval($v);
	    echo  "</li>"; }
	echo "</ul>\n";
}

function affboucles($boucles) {
+2 −1
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -34,11 +34,12 @@ function index_pile($idb, $nom_champ, &$boucles)
    $t = $table_des_tables[$r];
    if (!$t) $t = $r; // pour les tables non Spip
    // $t est le nom PHP de cette table 
    spip_log("'$idb' '$r' '$c' '$nom_champ'");
    $x = $tables_principales[$t];
    if (!$x) 
    {
      include_local("inc-debug-squel.php3");
      erreur_syntaxe_boucle("Table SQL absente de \$tables_principales dans inc_serialbase", $r, $idb);
      erreur_squelette("Table SQL absente de \$tables_principales dans inc_serialbase", $r, $idb);
    }

    $a = $x['field'];