pike.git / src / operators.c

version» Context lines:

pike.git/src/operators.c:1:   /*\   ||| This file a part of Pike, and is copyright by Fredrik Hubinette   ||| Pike is distributed as GPL (General Public License)   ||| See the files COPYING and DISCLAIMER for more information.   \*/   /**/   #include "global.h"   #include <math.h> - RCSID("$Id: operators.c,v 1.110 2000/10/15 12:24:14 grubba Exp $"); + RCSID("$Id: operators.c,v 1.111 2000/10/15 14:19:24 grubba Exp $");   #include "interpret.h"   #include "svalue.h"   #include "multiset.h"   #include "mapping.h"   #include "array.h"   #include "stralloc.h"   #include "opcodes.h"   #include "operators.h"   #include "language.h"   #include "pike_memory.h"
pike.git/src/operators.c:1653:    struct svalue *pos;    ptrdiff_t asize, delta;    if(sp[-1].u.float_number < 0)    SIMPLE_BAD_ARG_ERROR("`*", 2, "float(0..)");       src = sp[-2].u.array;    delta = src->size;    asize = (ptrdiff_t)floor(delta * sp[-1].u.float_number + 0.5);    ret = allocate_array(asize);    pos = ret->item; -  if (asize >= delta) { +  if (asize > delta) {    ret->type_field = src->type_field;    assign_svalues_no_free(pos,    src->item,    delta,    src->type_field);    pos += delta;    asize -= delta; -  while (asize >= delta) { +  while (asize > delta) {    assign_svalues_no_free(pos, ret->item, delta, ret->type_field);    pos += delta;    asize -= delta;    delta <<= 1;    }    if (asize) {    assign_svalues_no_free(pos, ret->item, asize, ret->type_field);    }    } else if (asize) {    assign_svalues_no_free(pos,
pike.git/src/operators.c:1698:       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) { +  if (len > delta) {    MEMCPY(pos, src->str, delta);    pos += delta;    len -= delta; -  while (len >= delta) { +  while (len > delta) {    MEMCPY(pos, ret->str, delta);    pos += delta;    len -= delta;    delta <<= 1;    }    if (len) {    MEMCPY(pos, ret->str, len);    }    } else if (len) {    MEMCPY(pos, src->str, len);