Skip to content

Commit

Permalink
Refactor test93.c to avoid scan-build warnings.
Browse files Browse the repository at this point in the history
  • Loading branch information
Quuxplusone committed Jan 1, 2021
1 parent 45af88c commit f0e1bd9
Showing 1 changed file with 17 additions and 20 deletions.
37 changes: 17 additions & 20 deletions tests/test93.c
Original file line number Diff line number Diff line change
Expand Up @@ -39,63 +39,60 @@ static void alt_fatal(char const * s) {
longjmp(j_buf, 1);
}

static example_user_t * init_user(int need_malloc_cnt) {
users = 0;
static void init_users(int need_malloc_cnt) {
users = NULL;
example_user_t * user = (example_user_t*)malloc(sizeof(example_user_t));
user->id = user_id;
is_fatal = 0;
malloc_cnt = need_malloc_cnt;
/* printf("adding to hash...\n"); */
if (!setjmp(j_buf)) {
HASH_ADD_INT(users, id, user);
} else {
free(user);
}
return user;
}

int main()
{
example_user_t *user;

#define init(a) do { \
} while(0)

example_user_t * user;

user = init_user(3); /* bloom filter must fail */
init_users(3); /* bloom filter must fail */
if (!is_fatal) {
printf("fatal not called after bloom failure\n");
}

user = init_user(2); /* bucket creation must fail */
init_users(2); /* bucket creation must fail */
if (!is_fatal) {
printf("fatal not called after bucket creation failure\n");
}

user = init_user(1); /* table creation must fail */
init_users(1); /* table creation must fail */
if (!is_fatal) {
printf("fatal not called after table creation failure\n");
}

user = init_user(4); /* hash must create OK */
init_users(4); /* hash must create OK */
if (is_fatal) {
printf("fatal error when creating hash normally\n");
/* bad idea to continue running */
return 1;
}

/* let's add users until expansion fails */
users = 0;
users = NULL;
malloc_cnt = 4;
while (1) {
user = (example_user_t*)malloc(sizeof(example_user_t));
user->id = user_id;
if (user_id++ == 1000) {
printf("there is no way 1000 iterations didn't require realloc\n");
break;
}
user = (example_user_t*)malloc(sizeof(example_user_t));
user->id = user_id;
if (!setjmp(j_buf)) {
HASH_ADD_INT(users, id, user);
} else {
free(user);
}
malloc_cnt = 0;
if (malloc_failed) {

if (!is_fatal) {
Expand All @@ -108,12 +105,12 @@ int main()
/* we can't really do anything, the hash is not in consistent
* state, so assume this is a success. */
break;

}
malloc_cnt = 0;
}

printf("End\n");
HASH_CLEAR(hh, users);

printf("End\n");
return 0;

}

0 comments on commit f0e1bd9

Please sign in to comment.