pike.git / src / array.c

version» Context lines:

pike.git/src/array.c:12:   #include "interpret.h"   #include "language.h"   #include "error.h"   #include "pike_types.h"   #include "fsort.h"   #include "builtin_functions.h"   #include "pike_memory.h"   #include "gc.h"   #include "main.h"    - RCSID("$Id: array.c,v 1.33 1998/04/17 17:12:58 hubbe Exp $"); + RCSID("$Id: array.c,v 1.34 1998/04/23 23:58:52 hubbe Exp $");      struct array empty_array=   {    1, /* Never free */    &empty_array, /* Next */    &empty_array, /* previous (circular) */    0, /* Size = 0 */    0, /* malloced Size = 0 */    0, /* no types */    0, /* no flags */
pike.git/src/array.c:1305:    return a;   }      struct array *explode(struct pike_string *str,    struct pike_string *del)   {    INT32 e;    struct array *ret;    char *s, *end, *tmp;    +  if(!str->len) +  { +  return allocate_array_no_init(0,0); +  }    if(!del->len)    {    ret=allocate_array_no_init(str->len,0);    for(e=0;e<str->len;e++)    {    ITEM(ret)[e].type=T_STRING;    ITEM(ret)[e].u.string=make_shared_binary_string(str->str+e,1);    }    }else{    struct mem_searcher searcher;
pike.git/src/array.c:1654:    *num_=num;    *size_=size;   }      struct array *explode_array(struct array *a, struct array *b)   {    INT32 e,d,q,start;    struct array *tmp;       q=start=0; -  push_array(a); /* Save us from destructive slice_arrays */ -  add_ref(a); +  if(!a->size) +  { +  return allocate_array_no_init(0,0); +  }    if(b->size)    {    for(e=0;e<=a->size - b->size;e++)    {    for(d=0;d<b->size;d++)    {    if(!is_eq(ITEM(a)+(e+d),ITEM(b)+d))    break;    }    if(d==b->size)    {    check_stack(1); -  push_array(slice_array(a, start, e)); +  push_array(friendly_slice_array(a, start, e));    q++;    e+=b->size-1;    start=e+1;    }    }    check_stack(1); -  push_array(slice_array(a, start, a->size)); +  push_array(friendly_slice_array(a, start, a->size));    q++;    }else{    check_stack(a->size); -  for(e=0;e<a->size;e++) push_array(slice_array(a, e, e+1)); +  for(e=0;e<a->size;e++) push_array(friendly_slice_array(a, e, e+1));    q=a->size;    }    tmp=aggregate_array(q);    if(tmp->size) tmp->type_field=BIT_ARRAY; -  pop_stack(); +     return tmp;   }      struct array *implode_array(struct array *a, struct array *b)   {    INT32 e,size;    struct array *ret;    size=0;    for(e=0;e<a->size;e++)    {