pike.git
/
src
/
operators.c
version
»
Context lines:
10
20
40
80
file
none
3
pike.git/src/operators.c:294:
break; case T_STRING: /* The generic function is rather slow, so I added this * code for benchmark purposes. :-) /per */ if( (sp[-1].u.string->len >= 10) || sp[-1].u.string->size_shift ) convert_stack_top_string_to_inumber(10); else {
-
INT_TYPE i =
STRTOL
(sp[-1].u.string->str, 0, 10);
+
INT_TYPE i =
strtol
(sp[-1].u.string->str, 0, 10);
free_string(sp[-1].u.string); SET_SVAL(sp[-1], T_INT, NUMBER_NUMBER, integer, i); } break; case PIKE_T_INT: break; default: Pike_error("Cannot cast %s to int.\n", get_name_of_type(TYPEOF(sp[-1])));
pike.git/src/operators.c:3394:
modify_stack_depth(-1); return 1; default: return 0; } } PMOD_EXPORT void o_lsh(void) {
+
if (sp[-1].u.integer < 0) {
+
int args = 2;
+
SIMPLE_BAD_ARG_ERROR("`<<", 2, "int(0..)|object");
+
}
if ((TYPEOF(sp[-1]) == T_INT) && (TYPEOF(sp[-2]) == T_INT) && INT_TYPE_LSH_OVERFLOW(sp[-2].u.integer, sp[-1].u.integer)) convert_stack_top_to_bignum(); if(TYPEOF(sp[-1]) != T_INT || TYPEOF(sp[-2]) != T_INT) { int args = 2; if(call_lfun(LFUN_LSH, LFUN_RLSH)) return; if(TYPEOF(sp[-2]) != T_INT) SIMPLE_BAD_ARG_ERROR("`<<", 1, "int|object"); SIMPLE_BAD_ARG_ERROR("`<<", 2, "int(0..)|object"); }
-
if (sp[-1].u.integer < 0) {
-
int args = 2;
-
SIMPLE_BAD_ARG_ERROR("`<<", 2, "int(0..)|object");
-
}
+
sp--; SET_SVAL(sp[-1], T_INT, NUMBER_NUMBER, integer, sp[-1].u.integer << sp->u.integer); } /*! @decl int `<<(int arg1, int arg2) *! @decl mixed `<<(object arg1, int|object arg2) *! @decl mixed `<<(int arg1, object arg2) *! *! Left shift.
pike.git/src/operators.c:3624:
if(sp[-1].u.float_number < 0) SIMPLE_BAD_ARG_ERROR("`*", 2, "float(0..)"); src = sp[-2].u.string; len = (ptrdiff_t)floor(src->len * sp[-1].u.float_number + 0.5); ret = begin_wide_shared_string(len, src->size_shift); len <<= src->size_shift; delta = src->len << src->size_shift; pos = ret->str; if (len > delta) {
-
MEMCPY
(pos, src->str, delta);
+
memcpy
(pos, src->str, delta);
pos += delta; len -= delta; while (len > delta) {
-
MEMCPY
(pos, ret->str, delta);
+
memcpy
(pos, ret->str, delta);
pos += delta; len -= delta; delta <<= 1; } if (len) {
-
MEMCPY
(pos, ret->str, len);
+
memcpy
(pos, ret->str, len);
} } else if (len) {
-
MEMCPY
(pos, src->str, len);
+
memcpy
(pos, src->str, len);
} pop_n_elems(2); push_string(low_end_shared_string(ret)); return; } case TWO_TYPES(T_STRING, T_INT): { 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);
+
memcpy
(pos,sp[-2].u.string->str,len);
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);