pike.git / src / stralloc.c

version» Context lines:

pike.git/src/stralloc.c:95:    INT32 *min, INT32 *max )   {    INT32 s_min = MAX_INT32;    INT32 s_max = MIN_INT32;    ptrdiff_t i;       if( loose || ((str->flags & STRING_CONTENT_CHECKED ) && (!str->size_shift || !max)) )    {    if( str->flags & STRING_CONTENT_CHECKED )    { +  switch (str->size_shift) { +  case eightbit:    s_min = str->min;    s_max = str->max; -  +  break; +  case sixteenbit: +  s_min = str->min; +  s_max = str->max; +  s_min *= 256; +  s_max *= 256; +  s_max += 255; +  break; +  case thirtytwobit: { +  unsigned INT32 tmp;    -  if( str->size_shift ) -  { -  s_min <<= 8 * str->size_shift; -  s_max <<= 8 * str->size_shift; -  if( s_min ) -  s_min -= (1<<(8*str->size_shift))-1; -  s_max += str->size_shift == 1 ? 255 : 65535; +  tmp = str->min; +  tmp *= (1 << 24); +  s_min = tmp; +  +  tmp = str->max; +  tmp *= (1 << 24); +  tmp += (1 << 24) - 1; +  s_max = tmp; +  break;    }    } -  +  }    else    {    switch( str->size_shift )    {    case 2: s_min = MIN_INT32; s_max=MAX_INT32; break;    case 1: s_min = 0; s_max = 65535; break;    case 0: s_min = 0; s_max = 255; break;    }    }    }
pike.git/src/stralloc.c:160:       case 1:    {    p_wchar1 *p = (p_wchar1*)str->str;    for( i=0; i<str->len; i++,p++ )    {    if( *p > s_max ) s_max = *p;    if( *p < s_min ) s_min = *p;    }    } -  str->min = (s_min+255) >> 8; -  str->max = (s_max+255) >> 8; +  str->min = s_min / 256; +  str->max = s_max / 256;    break;       case 2:    {    p_wchar2 *p = (p_wchar2*)str->str;    for( i=0; i<str->len; i++,p++ )    {    if( *p > s_max ) s_max = *p;    if( *p < s_min ) s_min = *p;    }    } -  str->min = (s_min+65535) >> 16; -  str->max = (s_max+65535) >> 16; +  str->min = (unsigned INT32)s_min / (1 << 24); +  str->max = (unsigned INT32)s_max / (1 << 24);    break;    }    }    if( min ) *min = s_min;    if( max ) *max = s_max;   }      static INLINE int find_magnitude1(const p_wchar1 *s, ptrdiff_t len)   {    const p_wchar1 *e=s+len;