pike.git / src / array.c

version» Context lines:

pike.git/src/array.c:2420:    SET_SVAL(ITEM(ret)[e], T_STRING, 0, string, string_slice(str,e,1));    }    }else{    SearchMojt mojt;    ONERROR uwp;    explode_searchfunc f = (explode_searchfunc)0;       s=str->str;    end=s+(str->len << str->size_shift);    -  ret=allocate_array(10); +  ret=allocate_array(2);    ret->size=0;       mojt=compile_memsearcher(MKPCHARP_STR(del),    del->len,    str->len,    del);    SET_ONERROR (uwp, do_free_object, mojt.container);       switch(str->size_shift)    {
pike.git/src/array.c:2500:   {    INT32 len, e, delims;    PCHARP r;    struct pike_string *ret;    struct svalue *ae;    int max_shift = del->size_shift;       len=0;    delims = 0;    +  +     for(e=a->size, ae=a->item; e--; ae++)    switch(TYPEOF(*ae))    {    case T_INT:    if(!ae->u.integer)    continue; /* skip zero (strings) */    /* FALLTHROUGH */    default:    Pike_error("Array element %d is not a string\n", ae-a->item);    case T_STRING:
pike.git/src/array.c:2523:    max_shift=ae->u.string->size_shift;    break;    }       if(delims)    {    len-=del->len;    delims--;    }    +  if( a->size == 1 && TYPEOF(*ITEM(a)) == PIKE_T_STRING ) +  { +  struct pike_string * res = ITEM(a)->u.string; +  res->refs++; +  return res; +  } +     ret=begin_wide_shared_string(len,max_shift);    r=MKPCHARP_STR(ret);    len = del->len;    if((e = a->size))    for(ae=a->item;e--;ae++)    {    if (TYPEOF(*ae) == T_STRING)    {    struct pike_string *tmp = ae->u.string;    pike_string_cpy(r,tmp);