Skip to content
Extraits de code Groupes Projets
Valider 21ad5673 rédigé par esj's avatar esj
Parcourir les fichiers

boucle infinie si recursion en première boucle (GoUaRfIg)

parent dbde3d80
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -29,11 +29,11 @@ function index_pile($idb, $nom_champ, &$boucles, $explicite='') { ...@@ -29,11 +29,11 @@ function index_pile($idb, $nom_champ, &$boucles, $explicite='') {
} }
} }
# spip_log("Cherche: $nom_champ a partir de '$idb'");
$c = strtolower($nom_champ); $c = strtolower($nom_champ);
// attention: entre la boucle nommee 0, "" et le tableau vide, // attention: entre la boucle nommee 0, "" et le tableau vide,
// il y a incoherences qu'il vaut mieux eviter // il y a incoherences qu'il vaut mieux eviter
while ($boucles[$idb]) { while ($boucles[$idb]) {
# spip_log("Cherche: $nom_champ '$idb' '$c'");
$r = $boucles[$idb]->type_requete; $r = $boucles[$idb]->type_requete;
$s = $boucles[$idb]->sql_serveur; $s = $boucles[$idb]->sql_serveur;
if (!$s) if (!$s)
...@@ -45,7 +45,7 @@ function index_pile($idb, $nom_champ, &$boucles, $explicite='') { ...@@ -45,7 +45,7 @@ function index_pile($idb, $nom_champ, &$boucles, $explicite='') {
if (!$t) {$nom_table = $t = $r; } if (!$t) {$nom_table = $t = $r; }
else $nom_table = 'spip_' . $t; else $nom_table = 'spip_' . $t;
#spip_log("Go: idb='$idb' r='$r' c='$c' nom='$nom_champ' s=$s t=$t"); # spip_log("Go: idb='$idb' r='$r' c='$c' nom='$nom_champ' s=$s t=$t");
$desc = $tables_des_serveurs_sql[$s][$nom_table]; $desc = $tables_des_serveurs_sql[$s][$nom_table];
if (!$desc) { if (!$desc) {
erreur_squelette(_T('zbug_table_inconnue', array('table' => $r)), erreur_squelette(_T('zbug_table_inconnue', array('table' => $r)),
...@@ -82,13 +82,13 @@ function index_pile($idb, $nom_champ, &$boucles, $explicite='') { ...@@ -82,13 +82,13 @@ function index_pile($idb, $nom_champ, &$boucles, $explicite='') {
$boucles[$idb]->select[] = $t . "." . $e; $boucles[$idb]->select[] = $t . "." . $e;
return '$Pile[$SP' . ($i ? "-$i" : "") . '][\'' . $c . '\']'; return '$Pile[$SP' . ($i ? "-$i" : "") . '][\'' . $c . '\']';
} }
# spip_log("On remonte vers $i");
// Sinon on remonte d'un cran // Sinon on remonte d'un cran
$idb = $boucles[$idb]->id_parent; $idb = $boucles[$idb]->id_parent;
$i++; $i++;
} }
# spip_log("Pas vu $nom_champ dans les " . count($boucles) . " boucles"); # spip_log("Pas vu $nom_champ");
// esperons qu'il y sera // esperons qu'il y sera
return('$Pile[0][\''.$nom_champ.'\']'); return('$Pile[0][\''.$nom_champ.'\']');
} }
...@@ -305,12 +305,13 @@ function filtres_arglist($args, $p, $sep) { ...@@ -305,12 +305,13 @@ function filtres_arglist($args, $p, $sep) {
// //
function calculer_argument_precedent($idb, $nom_champ, &$boucles) { function calculer_argument_precedent($idb, $nom_champ, &$boucles) {
// recursif ? // si recursif, forcer l'extraction du champ SQL mais ignorer le code
if ($boucles[$idb]->externe) if ($boucles[$idb]->externe)
index_pile ($idb, $nom_champ, $boucles); // reserver chez soi-meme index_pile ($idb, $nom_champ, $boucles);
// reserver chez le parent et renvoyer l'habituel $Pile[$SP]['nom_champ'] // retourner $Pile[$SP] et pas $Pile[0] (bug recursion en 1ere boucle)
# spip_log("boucles[$idb]->id_parent " . $boucles[$idb]->id_parent); $prec = $boucles[$idb]->id_parent;
return index_pile ($boucles[$idb]->id_parent, $nom_champ, $boucles); return (!$prec ? ('$Pile[$SP][\''.$nom_champ.'\']') :
index_pile($prec, $nom_champ, $boucles));
} }
function rindex_pile($p, $champ, $motif) function rindex_pile($p, $champ, $motif)
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter