diff --git a/include/lib/impress.class.php b/include/lib/impress.class.php index e5979383d..5de36f3fe 100644 --- a/include/lib/impress.class.php +++ b/include/lib/impress.class.php @@ -107,7 +107,7 @@ class Impress $amount=\Impress::compute_amount($p_cn,$line,$cond." ".$p_sql,$cond_anc." ".$p_sql); - $p_formula=str_replace($x[0], $amount, $p_formula); + $p_formula=str_replace($x[0],"(". $amount.")", $p_formula); } } @@ -119,9 +119,11 @@ class Impress */ $p_formula=remove_divide_zero($p_formula); $p_formula="\$result=".$p_formula.";"; - - eval("$p_formula"); - + try { + eval("$p_formula"); + } catch(Exception $e) { + return array("desc"=>"erreur","montant"=>'0'); + } while (preg_match("/\[([0-9]+)(-[Tt]*)\]/", trim($p_label), $e)==1) { $nom="!!".$e[1]."!!"; diff --git a/unit-test/include/class/impressTest.class.php b/unit-test/include/class/impressTest.class.php index 62a5e87f3..c5ea2a7fd 100644 --- a/unit-test/include/class/impressTest.class.php +++ b/unit-test/include/class/impressTest.class.php @@ -247,6 +247,7 @@ class ImpressTest extends TestCase array("sum FOURNI1 Débit", "{FOURNI1-d}",221.43), array("sum FOURNI1 Débit", "{NOTEXIST-d}",0), array("sum FOURNI1 Débit", "{{NOTEXIST-d}}",0), + array("Double minus sign throw an error ParseError: syntax error, unexpected '--' (T_DEC) ", "[6%-S]-[6%-S]",0), ); // ------ Periode ---------- foreach ($a_formula as $formula)