~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to mystrings/decimal.c

Merged build changes from Antony.

Show diffs side-by-side

added added

removed removed

Lines of Context:
99
99
      implementation-defined.
100
100
*/
101
101
 
102
 
#include <my_global.h>
 
102
#include <m_string.h>
103
103
#include <m_ctype.h>
104
 
#include <myisampack.h>
105
 
#include <my_sys.h> /* for my_alloca */
106
 
#include <m_string.h>
107
 
#include <decimal.h>
 
104
#include <storage/myisam/myisampack.h>
 
105
#include <mysys/my_sys.h> /* for my_alloca */
 
106
#include <mystrings/decimal.h>
108
107
 
109
108
/*
110
109
  Internally decimal numbers are stored base 10^9 (see DIG_BASE below)
1362
1361
  {
1363
1362
    assert(sizeof(dec1) == 4);
1364
1363
    *buf=mi_sint4korr(from) ^ mask;
1365
 
    if (((uint32)*buf) > DIG_MAX)
 
1364
    if (((uint32_t)*buf) > DIG_MAX)
1366
1365
      goto err;
1367
1366
    if (buf > to->buf || *buf != 0)
1368
1367
      buf++;
1374
1373
  {
1375
1374
    assert(sizeof(dec1) == 4);
1376
1375
    *buf=mi_sint4korr(from) ^ mask;
1377
 
    if (((uint32)*buf) > DIG_MAX)
 
1376
    if (((uint32_t)*buf) > DIG_MAX)
1378
1377
      goto err;
1379
1378
    buf++;
1380
1379
  }
1391
1390
      default: assert(0);
1392
1391
    }
1393
1392
    *buf=(x ^ mask) * powers10[DIG_PER_DEC1 - frac0x];
1394
 
    if (((uint32)*buf) > DIG_MAX)
 
1393
    if (((uint32_t)*buf) > DIG_MAX)
1395
1394
      goto err;
1396
1395
    buf++;
1397
1396
  }
2009
2008
  stop1=buf1-intg1;
2010
2009
  stop2=buf2-intg2;
2011
2010
 
2012
 
  bzero(to->buf, (intg0+frac0)*sizeof(dec1));
 
2011
  memset(to->buf, 0, (intg0+frac0)*sizeof(dec1));
2013
2012
 
2014
2013
  for (buf1+=frac1-1; buf1 >= stop1; buf1--, start0--)
2015
2014
  {
2177
2176
  if (!(tmp1=(dec1 *)my_alloca(len1*sizeof(dec1))))
2178
2177
    return E_DEC_OOM;
2179
2178
  memcpy(tmp1, buf1, i*sizeof(dec1));
2180
 
  bzero(tmp1+i, (len1-i)*sizeof(dec1));
 
2179
  memset(tmp1+i, 0, (len1-i)*sizeof(dec1));
2181
2180
 
2182
2181
  start1=tmp1;
2183
2182
  stop1=start1+len1;