pike.git
/
src
/
operators.c
version
»
Context lines:
10
20
40
80
file
none
3
pike.git/src/operators.c:1548:
"string|object|int|float|array|mapping|multiset", sp-args, "Incompatible types\n"); return; /* compiler hint */ case BIT_STRING: { struct pike_string *r; PCHARP buf; ptrdiff_t tmp; int max_shift=0;
-
+
unsigned char tmp_flags, tmp_min, tmp_max;
if(args==1) return; size=0; for(e=-args;e<0;e++) { size+=sp[e].u.string->len; if(sp[e].u.string->size_shift > max_shift) max_shift=sp[e].u.string->size_shift; }
pike.git/src/operators.c:1572:
return; } else if(args == 2 && (size == sp[-1].u.string->len)) { stack_swap(); pop_stack(); return; } tmp=sp[-args].u.string->len;
+
tmp_flags = sp[-args].u.string->flags;
+
tmp_min = sp[-args].u.string->min;
+
tmp_max = sp[-args].u.string->max;
+
r=new_realloc_shared_string(sp[-args].u.string,size,max_shift);
-
+
+
r->flags |= tmp_flags & ~15;
+
r->min = tmp_min;
+
r->max = tmp_max;
+
mark_free_svalue (sp - args); buf=MKPCHARP_STR_OFF(r,tmp); for(e=-args+1;e<0;e++) {
-
+
if( sp[e].u.string->len )
+
{
+
update_flags_for_add( r, sp[e].u.string );
pike_string_cpy(buf,sp[e].u.string); INC_PCHARP(buf,sp[e].u.string->len); }
-
+
}
SET_SVAL(sp[-args], T_STRING, 0, string, low_end_shared_string(r));
-
for(e=-args+1;e<0;e++) free_string(sp[e].u.string);
+
+
for(e=-args+1;e<0;e++)
+
free_string(sp[e].u.string);
+
sp-=args-1; break; } case BIT_STRING | BIT_INT: case BIT_STRING | BIT_FLOAT: case BIT_STRING | BIT_FLOAT | BIT_INT: { struct pike_string *r;