From cbd1f20d08a9bb85dd89be1b97e8e5442a6435ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Grubbstr=C3=B6m=20=28Grubba=29?= <grubba@grubba.org> Date: Fri, 29 Jun 2001 12:47:37 +0200 Subject: [PATCH] Now ensures correct evaluation order in optimize_replace(). Rev: src/builtin_functions.c:1.387 --- src/builtin_functions.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/builtin_functions.c b/src/builtin_functions.c index 7c64a7190e..34d7dc305e 100644 --- a/src/builtin_functions.c +++ b/src/builtin_functions.c @@ -5,7 +5,7 @@ \*/ /**/ #include "global.h" -RCSID("$Id: builtin_functions.c,v 1.386 2001/06/29 02:14:56 hubbe Exp $"); +RCSID("$Id: builtin_functions.c,v 1.387 2001/06/29 10:47:37 grubba Exp $"); #include "interpret.h" #include "svalue.h" #include "pike_macros.h" @@ -3115,10 +3115,12 @@ node *optimize_replace(node *n) } else { extern struct program *multi_string_replace_program; INT16 lfun; - struct object *replace_obj = - clone_object(multi_string_replace_program, - eval_low(*arg1) + eval_low(*arg2)); + struct object *replace_obj; node *ret = NULL; + INT32 args = eval_low(*arg1); /* NOTE: Addition splitted to ensure */ + args += eval_low(*arg2); /* correct evaluation order. */ + + replace_obj = clone_object(multi_string_replace_program, args); push_object(replace_obj); if (replace_obj->prog && -- GitLab