From fb5c4fec1f415edf0cb4fd343e6134552b9d1038 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20H=C3=BCbinette=20=28Hubbe=29?= <hubbe@hubbe.net> Date: Sun, 24 Mar 1996 15:18:51 +0100 Subject: [PATCH] fixed small bug when garbage collecting Rev: src/operators.c:1.6 --- src/operators.c | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/src/operators.c b/src/operators.c index fe9859685b..b280c5a9ef 100644 --- a/src/operators.c +++ b/src/operators.c @@ -382,13 +382,13 @@ void o_subtract() case T_STRING: { struct lpc_string *s,*ret; - sp--; s=make_shared_string(""); - ret=string_replace(sp[-1].u.string,sp[0].u.string,s); + ret=string_replace(sp[-2].u.string,sp[-1].u.string,s); + free_string(sp[-2].u.string); free_string(sp[-1].u.string); - free_string(sp[0].u.string); free_string(s); - sp[-1].u.string=ret; + sp[-2].u.string=ret; + sp--; return; } @@ -704,12 +704,12 @@ void o_multiply() case TWO_TYPES(T_ARRAY,T_STRING): { struct lpc_string *ret; + ret=implode(sp[-2].u.array,sp[-1].u.string); + free_string(sp[-1].u.string); + free_array(sp[-2].u.array); + sp[-2].type=T_STRING; + sp[-2].u.string=ret; sp--; - ret=implode(sp[-1].u.array,sp[0].u.string); - free_string(sp[0].u.string); - free_array(sp[-1].u.array); - sp[-1].type=T_STRING; - sp[-1].u.string=ret; return; } @@ -779,12 +779,12 @@ void o_divide() case T_STRING: { struct array *ret; - sp--; - ret=explode(sp[-1].u.string,sp[0].u.string); + ret=explode(sp[-2].u.string,sp[-1].u.string); + free_string(sp[-2].u.string); free_string(sp[-1].u.string); - free_string(sp[0].u.string); - sp[-1].type=T_ARRAY; - sp[-1].u.array=ret; + sp[-2].type=T_ARRAY; + sp[-2].u.array=ret; + sp--; return; } -- GitLab