| |
| #include <stdio.h> |
| #include <stdlib.h> |
| |
| /* The original test driver machinery. */ |
| #define N_TEST_TRANSACTIONS 500 |
| #define N_TEST_ARR 2000 |
| |
| #define M_TEST_MALLOC 1000 |
| |
| void* test_arr[N_TEST_ARR]; |
| |
| unsigned myrandom(void) |
| { |
| /* Simple multiply-with-carry random generator. */ |
| static unsigned m_w = 11; |
| static unsigned m_z = 13; |
| |
| m_z = 36969 * (m_z & 65535) + (m_z >> 16); |
| m_w = 18000 * (m_w & 65535) + (m_w >> 16); |
| return (m_z << 16) + m_w; |
| } |
| |
| int main ( int argc, char** argv ) |
| { |
| int i, j, k, nbytes; |
| unsigned char* chp; |
| |
| for (i = 0; i < N_TEST_ARR; i++) |
| test_arr[i] = NULL; |
| |
| for (i = 0; i < N_TEST_TRANSACTIONS; i++) { |
| j = myrandom() % N_TEST_ARR; |
| if (test_arr[j]) { |
| free(test_arr[j]); |
| test_arr[j] = NULL; |
| } else { |
| nbytes = 1 + myrandom() % M_TEST_MALLOC; |
| if (myrandom()%64 == 32) |
| nbytes *= 17; |
| test_arr[j] = malloc( nbytes ); |
| chp = test_arr[j]; |
| for (k = 1; k < nbytes; k++) |
| chp[k] = (unsigned char)(k + 99); |
| } |
| } |
| |
| for (i = 0; test_arr[i] == NULL; i++) ; |
| free(test_arr[i]); |
| ((char*)test_arr[i])[0] = 0; |
| |
| for (i = 0; i < N_TEST_ARR; i++) { |
| if (test_arr[i]) { |
| free(test_arr[i]); |
| test_arr[i] = NULL; |
| } |
| } |
| |
| return 0; |
| } |