Branch: Tag:

1999-05-12

1999-05-12 05:26:55 by Fredrik Hübinette (Hubbe) <hubbe@hubbe.net>

bugfix for `->

Rev: src/interpret.c:1.112

4:   ||| See the files COPYING and DISCLAIMER for more information.   \*/   #include "global.h" - RCSID("$Id: interpret.c,v 1.111 1998/11/22 11:02:53 hubbe Exp $"); + RCSID("$Id: interpret.c,v 1.112 1999/05/12 05:26:55 hubbe Exp $");   #include "interpret.h"   #include "object.h"   #include "program.h"
957:       CASE(F_LTOSVAL2);    sp[0]=sp[-1]; -  lvalue_to_svalue_no_free(sp-1,sp-3); +  sp[-1].type=T_INT; +  sp++; +  lvalue_to_svalue_no_free(sp-2,sp-4);       /* this is so that foo+=bar (and similar things) will be faster, this    * is done by freeing the old reference to foo after it has been pushed
965:    * and then the low array/multiset/mapping manipulation routines can be    * destructive if they like    */ -  if( (1 << sp[-1].type) & ( BIT_ARRAY | BIT_MULTISET | BIT_MAPPING | BIT_STRING )) +  if( (1 << sp[-2].type) & ( BIT_ARRAY | BIT_MULTISET | BIT_MAPPING | BIT_STRING ))    {    struct svalue s;    s.type=T_INT;    s.subtype=0;    s.u.integer=0; -  assign_lvalue(sp-3,&s); +  assign_lvalue(sp-4,&s);    } -  sp++; +     break;          CASE(F_ADD_TO_AND_POP);    sp[0]=sp[-1]; -  lvalue_to_svalue_no_free(sp-1,sp-3); +  sp[-1].type=T_INT; +  sp++; +  lvalue_to_svalue_no_free(sp-2,sp-4);       /* this is so that foo+=bar (and similar things) will be faster, this    * is done by freeing the old reference to foo after it has been pushed
987:    * and then the low array/multiset/mapping manipulation routines can be    * destructive if they like    */ -  if( (1 << sp[-1].type) & ( BIT_ARRAY | BIT_MULTISET | BIT_MAPPING | BIT_STRING )) +  if( (1 << sp[-2].type) & ( BIT_ARRAY | BIT_MULTISET | BIT_MAPPING | BIT_STRING ))    {    struct svalue s;    s.type=T_INT;    s.subtype=0;    s.u.integer=0; -  assign_lvalue(sp-3,&s); +  assign_lvalue(sp-4,&s);    } -  sp++; +     f_add(2);    assign_lvalue(sp-3,sp-1);    pop_n_elems(3);