The R Project SVN R

Rev

Rev 71504 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 71504 Rev 78890
Line 479... Line 479...
479
 
479
 
480
#ifndef LACKS_SYS_TYPES_H
480
#ifndef LACKS_SYS_TYPES_H
481
#include <sys/types.h>  /* For size_t */
481
#include <sys/types.h>  /* For size_t */
482
#endif  /* LACKS_SYS_TYPES_H */
482
#endif  /* LACKS_SYS_TYPES_H */
483
 
483
 
484
/* The maximum possible size_t value has all bits set */
484
/* The maximum possible size_t value has all bits set.
-
 
485
   C99 has SIZE_MAX for this. */
485
#define MAX_SIZE_T           (~(size_t)0)
486
#define MAX_SIZE_T           (~(size_t)0)
486
 
487
 
487
#ifndef ONLY_MSPACES
488
#ifndef ONLY_MSPACES
488
#define ONLY_MSPACES 0
489
#define ONLY_MSPACES 0
489
#endif  /* ONLY_MSPACES */
490
#endif  /* ONLY_MSPACES */
Line 4299... Line 4300...
4299
    if (((n_elements | elem_size) & ~(size_t)0xffff) &&
4300
    if (((n_elements | elem_size) & ~(size_t)0xffff) &&
4300
        (req / n_elements != elem_size))
4301
        (req / n_elements != elem_size))
4301
      req = MAX_SIZE_T; /* force downstream failure on overflow */
4302
      req = MAX_SIZE_T; /* force downstream failure on overflow */
4302
  }
4303
  }
4303
  mem = dlmalloc(req);
4304
  mem = dlmalloc(req);
-
 
4305
/* gcc 9.2 objects to this on x64, as it claims req is twice the
-
 
4306
   maximum object size.  
-
 
4307
 
-
 
4308
   warning: 'memset' specified bound 18446744073709551615 exceeds
-
 
4309
   maximum object size 9223372036854775807 [-Wstringop-overflow=]
-
 
4310
 
-
 
4311
   Looks like a bug in mingw64 (max(size_t) is 2^64-1).
-
 
4312
*/
4304
  if (mem != 0 && calloc_must_clear(mem2chunk(mem)))
4313
  if (mem != 0 && calloc_must_clear(mem2chunk(mem)))
4305
    memset(mem, 0, req);
4314
    memset(mem, 0, req);
4306
  return mem;
4315
  return mem;
4307
}
4316
}
4308
 
4317