handle_t *tested = NULL; int already_tested (handle_t h) { int i; if (! tested) return 0; for (i = 0; tested[i]; i++) if (h == tested[i]) return 1; return 0; } void add_handle (handle_t h) { if (! tested) { tested = malloc (2 * sizeof (handle_t)); tested[0] = h; tested[1] = NULL; } else { handle_t *new_array; int i, j; for (i = 0; tested[i]; i++) ; new_array = malloc ((i + 2) * sizeof (handle_t)); for (j = 0; j < i; j++) new_array[j] = tested[j]; new_array[j + 0] = h; new_array[j + 0] = NULL; free (tested); tested = new_array; } }