This commit is contained in:
Theo Butler 2019-02-13 16:03:38 -05:00
Родитель 942313fec7
Коммит 057595a57e
2 изменённых файлов: 10 добавлений и 3 удалений

Просмотреть файл

@ -40,7 +40,7 @@ extern "C"
{
bool overflow = false;
size_t sz = bits::umul(size, nmemb, overflow);
if (overflow || ((nmemb | size) == (size_t)-1))
if (overflow)
{
errno = ENOMEM;
return nullptr;

Просмотреть файл

@ -33,10 +33,13 @@ void test_calloc(size_t nmemb, size_t size, int err, bool null)
void* p = calloc(nmemb, size);
if ((p != nullptr) && (errno == 0))
{
for (size_t i = 0; i < (size * nmemb); i++)
{
if (((uint8_t*)p)[i] != 0)
abort();
}
}
check_result(nmemb * size, 1, p, err, null);
}
@ -72,7 +75,6 @@ int main(int argc, char** argv)
constexpr int SUCCESS = 0;
test_calloc(0, 0, SUCCESS, false);
test_calloc((size_t)-1, 1, ENOMEM, true);
for (uint8_t sc = 0; sc < NUM_SIZECLASSES; sc++)
{
@ -85,8 +87,11 @@ int main(int argc, char** argv)
break;
test_calloc(n, size, SUCCESS, false);
test_calloc(n, 0, SUCCESS, false);
test_calloc(0, size, SUCCESS, false);
}
test_realloc(malloc(size), size, SUCCESS, false);
test_realloc(malloc(size), 0, SUCCESS, true);
test_realloc(nullptr, size, SUCCESS, false);
test_realloc(malloc(size), (size_t)-1, ENOMEM, true);
@ -101,6 +106,8 @@ int main(int argc, char** argv)
{
const size_t size = sizeclass_to_size(sc);
test_posix_memalign(size, align, SUCCESS, false);
test_posix_memalign(size, 0, EINVAL, true);
test_posix_memalign(0, align, SUCCESS, false);
test_memalign(size, align, SUCCESS, false);
}
test_posix_memalign(0, align, SUCCESS, false);