pike.git
/
src
/
operators.c
version
»
Context lines:
10
20
40
80
file
none
3
pike.git/src/operators.c:1:
/*\ ||| This file a part of Pike, and is copyright by Fredrik Hubinette ||| Pike is distributed as GPL (General Public License) ||| See the files COPYING and DISCLAIMER for more information. \*/ /**/ #include "global.h" #include <math.h>
-
RCSID("$Id: operators.c,v 1.
96
2000/08/
09
15
:
07
:
34
grubba
Exp $");
+
RCSID("$Id: operators.c,v 1.
97
2000/08/
10
09:
51
:
51
per
Exp $");
#include "interpret.h" #include "svalue.h" #include "multiset.h" #include "mapping.h" #include "array.h" #include "stralloc.h" #include "opcodes.h" #include "operators.h" #include "language.h" #include "pike_memory.h"
pike.git/src/operators.c:2476:
emit0(F_CALL_FUNCTION); return 1; } struct program *string_assignment_program; #undef THIS #define THIS ((struct string_assignment_storage *)(CURRENT_STORAGE)) static void f_string_assignment_index(INT32 args) {
-
INT32
i;
+
INT_TYPE
i;
get_all_args("string[]",args,"%i",&i); if(i<0) i+=THIS->s->len; if(i<0) i+=THIS->s->len; if(i<0 || i>=THIS->s->len) error("Index %d is out of range 0 - %d.\n", i, THIS->s->len-1); else i=index_shared_string(THIS->s,i); pop_n_elems(args); push_int(i); } static void f_string_assignment_assign_index(INT32 args) {
-
INT32
i,j;
+
INT_TYPE
i,j;
union anything *u; get_all_args("string[]=",args,"%i%i",&i,&j); if((u=get_pointer_if_this_type(THIS->lval, T_STRING))) { free_string(THIS->s); if(i<0) i+=u->string->len; if(i<0 || i>=u->string->len) error("String index out of range %ld\n",(long)i); u->string=modify_shared_string(u->string,i,j); copy_shared_string(THIS->s, u->string);