Skip to content
Extraits de code Groupes Projets
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
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -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;
......
......@@ -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,
......
......@@ -11,7 +11,7 @@ define("_INC_DEBUG", "1");
function affval($val) {
echo entites_html($val);
echo "“" . entites_html($val) . "”";
}
......@@ -22,15 +22,31 @@ function afftable($table) {
echo "<UL>";
while (list($key, $val) = each($table)) {
echo "<LI>";
switch ($val->type) {
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 'champ':
case 'include':
echo affval($val->fichier);
afftable($params);
break;
case 'champ':
echo "<font color='blue'><i>#".$val->nom_champ;
if ($val->fonctions) echo " <small>(".join(',', $val->fonctions).")</small>";
echo "</i></font>";
......@@ -40,29 +56,22 @@ function afftable($table) {
echo afftable($val->cond_apres);
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) {
......
......@@ -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'];
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter