diff options
| author | Yang Tse <yangsita@gmail.com> | 2008-10-26 03:03:29 +0000 | 
|---|---|---|
| committer | Yang Tse <yangsita@gmail.com> | 2008-10-26 03:03:29 +0000 | 
| commit | 6db8f534450d50ff70c3d5a46ac32ccfbac4da46 (patch) | |
| tree | 991011a35238e4b53c43ca1e6fa5433a45c8d6b6 /tests/libtest | |
| parent | 417bac4055ce215d3edb34f33f46e1dedaab48bb (diff) | |
test #558 verifies loop operation using malloc() and free()
Diffstat (limited to 'tests/libtest')
| -rw-r--r-- | tests/libtest/Makefile.am | 4 | ||||
| -rw-r--r-- | tests/libtest/lib558.c | 127 | 
2 files changed, 130 insertions, 1 deletions
diff --git a/tests/libtest/Makefile.am b/tests/libtest/Makefile.am index 94774c310..0801b4ef9 100644 --- a/tests/libtest/Makefile.am +++ b/tests/libtest/Makefile.am @@ -53,7 +53,7 @@ noinst_PROGRAMS = lib500 lib501 lib502 lib503 lib504 lib505 lib506	\    lib517 lib518 lib519 lib520 lib521 lib523 lib524 lib525 lib526 lib527	\    lib529 lib530 lib532 lib533 lib536 lib537 lib540 lib541 lib542 lib543 \    lib544 lib545 lib547 lib548 lib549 lib552 lib553 lib554 lib555 lib556 \ -  lib539 lib557 +  lib539 lib557 lib558  # Dependencies (may need to be overriden)  LDADD = $(LIBDIR)/libcurl.la @@ -162,3 +162,5 @@ lib554_SOURCES = lib554.c $(SUPPORTFILES)  lib556_SOURCES = lib556.c $(SUPPORTFILES)  lib557_SOURCES = lib557.c $(SUPPORTFILES) + +lib558_SOURCES = lib558.c $(SUPPORTFILES) diff --git a/tests/libtest/lib558.c b/tests/libtest/lib558.c new file mode 100644 index 000000000..d5d1d146a --- /dev/null +++ b/tests/libtest/lib558.c @@ -0,0 +1,127 @@ +/***************************************************************************** + *                                  _   _ ____  _ + *  Project                     ___| | | |  _ \| | + *                             / __| | | | |_) | | + *                            | (__| |_| |  _ <| |___ + *                             \___|\___/|_| \_\_____| + * + * $Id$ + */ + + + +#include "test.h" + +#include "memdebug.h" + +#define TABLE_SIZE 10 + + +struct element_st { +  int idx; +  int dummy; +}; + + +struct root_st { +  struct element_st **table; +  int size; +}; + + +static +struct root_st * new_root(void) +{ +  struct root_st *r; + +  r = malloc(sizeof(struct root_st)); +  if(r != NULL) +    printf("malloc of root struct OK\n"); +  else { +    printf("malloc of root struct failed\n"); +    return NULL; +  } + +  r->size = TABLE_SIZE; +  r->table = malloc(r->size * sizeof(struct element_st *)); +  if(r->table != NULL) +    printf("malloc of pointer table OK\n"); +  else { +    printf("malloc of pointer table failed\n"); +    free(r); +    return NULL; +  } + +  return r; +} + + +static +struct element_st * new_element(int idx) +{ +  struct element_st *e; + +  e = malloc(sizeof(struct element_st)); +  if(e != NULL) +    printf("malloc of pointed element (idx %d) OK\n", idx); +  else { +    printf("malloc of pointed element (idx %d) failed\n", idx); +    return NULL; +  } + +  e->idx = e->dummy = idx; + +  return e; +} + + +int test(char *URL) +{ +  struct root_st *root; +  int error; +  int i; +  (void)URL; /* not used */ + +  root = new_root(); +  if(!root) +    return TEST_ERR_MAJOR_BAD; + +  printf("initializing table...\n"); +  for (i = 0; i < root->size; ++i) { +    root->table[i] = NULL; +  } +  printf("table initialized OK\n"); + +  printf("filling pointer table...\n"); +  error = 0; +  for (i = 0; i < root->size; ++i) { +    root->table[i] = new_element(i); +    if(!root->table[i]) { +      error = 1; +      break; +    } +  } +  if(error) { +    printf("pointer table filling failed\n"); +    return TEST_ERR_MAJOR_BAD; +  } +  else +    printf("pointer table filling OK\n"); + +  printf("freeing pointers in table...\n"); +  for (i = 0; i < root->size; ++i) { +    if(root->table[i]) +      free(root->table[i]); +  } +  printf("freeing pointers in table OK\n"); + +  printf("freeing table...\n"); +  free(root->table); +  printf("freeing table OK\n"); + +  printf("freeing root struct...\n"); +  free(root); +  printf("freeing root struct OK\n"); + +  return 0; /* OK */ +}  | 
