pike.git
/
src
/
operators.c
version
»
Context lines:
10
20
40
80
file
none
3
pike.git/src/operators.c:3633:
struct pike_string *ret; char *pos; INT_TYPE e; ptrdiff_t len; if(sp[-1].u.integer < 0) SIMPLE_BAD_ARG_ERROR("`*", 2, "int(0..)"); ret=begin_wide_shared_string(sp[-2].u.string->len * sp[-1].u.integer, sp[-2].u.string->size_shift); pos=ret->str; len=sp[-2].u.string->len << sp[-2].u.string->size_shift;
-
for
(
e=0;e<
sp[-
1
].u.
integer;e++
,
pos+=len)
-
MEMCPY(pos
,sp[-
2
].u.
string->str,len
);
+
cmemset
(
pos,
sp[-
2
].u.
string->str
,
len
,
sp[-
1
].u.
integer
);
pop_n_elems(2); push_string(low_end_shared_string(ret)); return; } case TWO_TYPES(T_ARRAY,T_STRING): { struct pike_string *ret; ret=implode(sp[-2].u.array,sp[-1].u.string); free_string(sp[-1].u.string);