pike.git / src / stralloc.c

version» Context lines:

pike.git/src/stralloc.c:355:    return ret;   }      struct lpc_string *string_replace(struct lpc_string *str,    struct lpc_string *del,    struct lpc_string *to)   {    struct lpc_string *ret;    INT32 delimeters;    char *s,*tmp,*r,*end; +  struct mem_searcher searcher;       s=str->str;    end=s+str->len;    delimeters=0;    -  while((s=MEMMEM(del->str,del->len,s,end-s))) +  init_memsearch(&searcher, del->str, del->len, str->len * 2); +  +  while((s=memory_search(&searcher,s,end-s)))    {    delimeters++;    s+=del->len;    }       if(!delimeters)    {    str->refs++;    return str;    }       ret=begin_shared_string(str->len + (to->len-del->len)*delimeters);    s=str->str;    r=ret->str;    -  while((tmp=MEMMEM(del->str,del->len,s,end-s))) +  while((tmp=memory_search(&searcher,s,end-s)))    {    MEMCPY(r,s,tmp-s);    r+=tmp-s;    MEMCPY(r,to->str,to->len);    r+=to->len;    s=tmp+del->len;    }    MEMCPY(r,s,end-s);       return end_shared_string(ret);