From 44c8aa39d7af70f0a9b1238c7d85c918775fefb6 Mon Sep 17 00:00:00 2001 From: "Committo,Ergo:sum" <esj@rezo.net> Date: Thu, 31 Aug 2006 12:49:43 +0000 Subject: [PATCH] =?UTF-8?q?Il=20faut=20sauvegarer=20manuellement=20les=20c?= =?UTF-8?q?ompteurs=20de=20boucles=20quand=20elles=20sont=20r=C3=A9curisve?= =?UTF-8?q?s=20(Aur=C3=A9lien=20et=20St=C3=A9phane).?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ecrire/public/compiler.php | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/ecrire/public/compiler.php b/ecrire/public/compiler.php index a5973202b1..f22be6e493 100644 --- a/ecrire/public/compiler.php +++ b/ecrire/public/compiler.php @@ -112,7 +112,7 @@ function calculer_inclure($struct, $descr, &$boucles, $id_boucle) { function calculer_boucle($id_boucle, &$boucles) { if ($boucles[$id_boucle]->type_requete == 'boucle') { - $corps = ( "\n \$t0 = " . $boucles[$id_boucle]->return . ";"); + $corps = calculer_boucle_rec($id_boucle, $boucles); $req = ""; } else { $corps = calculer_boucle_nonrec($id_boucle, $boucles); @@ -129,6 +129,17 @@ function calculer_boucle($id_boucle, &$boucles) { . "\n return \$t0;"; } +// compil d'un boucle non recursive. +// il suffit (ET IL FAUT) sauvegarder les valeurs des arguments passes par +// reference, car par definition un tel passage ne les sauvegarde pas + +function calculer_boucle_rec($id_boucle, &$boucles) { + $nom = $boucles[$id_boucle]->param[0]; + return "\n\t\$save_numrows = (\$Numrows['$nom']);" + . "\n\t\$t0 = " . $boucles[$id_boucle]->return . ";" + . "\n\t\$Numrows['$nom'] = (\$save_numrows);"; +} + // compil d'un boucle non recursive. // c'est un "while (fetch_sql)" dans le cas général, // qu'on essaye d'optimiser un max. -- GitLab