diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | catgets/gencat.c | 16 |
2 files changed, 11 insertions, 10 deletions
diff --git a/ChangeLog b/ChangeLog index c55b452ca9..f777cbc3e3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +1998-10-30 Ulrich Drepper <drepper@cygnus.com> + + * catgets/gencat.c: Do a better job in initializing dynamic + memory [PR libc/844]. + 1998-10-30 18:11 Ulrich Drepper <drepper@cygnus.com> * iconv/gconv_conf.c (__gconv_read_conf): Don't define as diff --git a/catgets/gencat.c b/catgets/gencat.c index d1c92a035b..d632f82bc4 100644 --- a/catgets/gencat.c +++ b/catgets/gencat.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1996. @@ -135,6 +135,7 @@ static struct argp argp = /* Wrapper functions with error checking for standard functions. */ extern void *xmalloc (size_t n); +extern void *xcalloc (size_t n, size_t s); /* Prototypes for local functions. */ static void error_print (void); @@ -275,16 +276,13 @@ read_input_file (struct catalog *current, const char *fname) /* If we haven't seen anything yet, allocate result structure. */ if (current == NULL) { - current = (struct catalog *) xmalloc (sizeof (*current)); - - current->all_sets = NULL; - current->total_messages = 0; - current->last_set = 0; - current->current_set = find_set (current, NL_SETD); + current = (struct catalog *) xcalloc (1, sizeof (*current)); #define obstack_chunk_alloc malloc #define obstack_chunk_free free obstack_init (¤t->mem_pool); + + current->current_set = find_set (current, NL_SETD); } buf = NULL; @@ -879,10 +877,8 @@ find_set (struct catalog *current, int number) result = result->next; /* Prepare new message set. */ - result = (struct set_list *) xmalloc (sizeof (*result)); + result = (struct set_list *) xcalloc (1, sizeof (*result)); result->number = number; - result->deleted = 0; - result->messages = NULL; result->next = current->all_sets; current->all_sets = result; |