Commit f4471acb by Janne Blomqvist

Use calloc instead of malloc and memset.

2012-03-25  Janne Blomqvist  <jb@gcc.gnu.org>

	* runtime/memory.c (xcalloc): New function.
	* libgfortran.h (xcalloc): New prototype.
	* io/list_read.c (push_char): Use xcalloc instead of get_mem and
	memset.
	(l_push_char): Likewise.
	* io/unit.c (insert_unit): Likewise.
	(get_internal_unit): Likewise.
	* io/unix.c (open_internal): Likewise.
	(open_internal4): Likewise.
	(fd_to_stream): Likewise.

From-SVN: r185773
parent 06518651
2012-03-25 Janne Blomqvist <jb@gcc.gnu.org>
* runtime/memory.c (xcalloc): New function.
* libgfortran.h (xcalloc): New prototype.
* io/list_read.c (push_char): Use xcalloc instead of get_mem and
memset.
(l_push_char): Likewise.
* io/unit.c (insert_unit): Likewise.
(get_internal_unit): Likewise.
* io/unix.c (open_internal): Likewise.
(open_internal4): Likewise.
(fd_to_stream): Likewise.
2012-03-17 Janne Blomqvist <jb@gcc.gnu.org> 2012-03-17 Janne Blomqvist <jb@gcc.gnu.org>
PR libfortran/52608 PR libfortran/52608
......
/* Copyright (C) 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010, 2011 /* Copyright (C) 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010, 2011, 2012
Free Software Foundation, Inc. Free Software Foundation, Inc.
Contributed by Andy Vaught Contributed by Andy Vaught
Namelist input contributed by Paul Thomas Namelist input contributed by Paul Thomas
...@@ -75,9 +75,8 @@ push_char (st_parameter_dt *dtp, char c) ...@@ -75,9 +75,8 @@ push_char (st_parameter_dt *dtp, char c)
if (dtp->u.p.saved_string == NULL) if (dtp->u.p.saved_string == NULL)
{ {
dtp->u.p.saved_string = get_mem (SCRATCH_SIZE); // Plain malloc should suffice here, zeroing not needed?
// memset below should be commented out. dtp->u.p.saved_string = xcalloc (SCRATCH_SIZE, 1);
memset (dtp->u.p.saved_string, 0, SCRATCH_SIZE);
dtp->u.p.saved_length = SCRATCH_SIZE; dtp->u.p.saved_length = SCRATCH_SIZE;
dtp->u.p.saved_used = 0; dtp->u.p.saved_used = 0;
} }
...@@ -622,10 +621,7 @@ static void ...@@ -622,10 +621,7 @@ static void
l_push_char (st_parameter_dt *dtp, char c) l_push_char (st_parameter_dt *dtp, char c)
{ {
if (dtp->u.p.line_buffer == NULL) if (dtp->u.p.line_buffer == NULL)
{ dtp->u.p.line_buffer = xcalloc (SCRATCH_SIZE, 1);
dtp->u.p.line_buffer = get_mem (SCRATCH_SIZE);
memset (dtp->u.p.line_buffer, 0, SCRATCH_SIZE);
}
dtp->u.p.line_buffer[dtp->u.p.item_count++] = c; dtp->u.p.line_buffer[dtp->u.p.item_count++] = c;
} }
......
/* Copyright (C) 2002, 2003, 2005, 2007, 2008, 2009, 2010, 2011 /* Copyright (C) 2002, 2003, 2005, 2007, 2008, 2009, 2010, 2011, 2012
Free Software Foundation, Inc. Free Software Foundation, Inc.
Contributed by Andy Vaught Contributed by Andy Vaught
F2003 I/O support contributed by Jerry DeLisle F2003 I/O support contributed by Jerry DeLisle
...@@ -188,8 +188,7 @@ insert (gfc_unit *new, gfc_unit *t) ...@@ -188,8 +188,7 @@ insert (gfc_unit *new, gfc_unit *t)
static gfc_unit * static gfc_unit *
insert_unit (int n) insert_unit (int n)
{ {
gfc_unit *u = get_mem (sizeof (gfc_unit)); gfc_unit *u = xcalloc (1, sizeof (gfc_unit));
memset (u, '\0', sizeof (gfc_unit));
u->unit_number = n; u->unit_number = n;
#ifdef __GTHREAD_MUTEX_INIT #ifdef __GTHREAD_MUTEX_INIT
{ {
...@@ -385,14 +384,8 @@ get_internal_unit (st_parameter_dt *dtp) ...@@ -385,14 +384,8 @@ get_internal_unit (st_parameter_dt *dtp)
/* Allocate memory for a unit structure. */ /* Allocate memory for a unit structure. */
iunit = get_mem (sizeof (gfc_unit)); iunit = xcalloc (1, sizeof (gfc_unit));
if (iunit == NULL)
{
generate_error (&dtp->common, LIBERROR_INTERNAL_UNIT, NULL);
return NULL;
}
memset (iunit, '\0', sizeof (gfc_unit));
#ifdef __GTHREAD_MUTEX_INIT #ifdef __GTHREAD_MUTEX_INIT
{ {
__gthread_mutex_t tmp = __GTHREAD_MUTEX_INIT; __gthread_mutex_t tmp = __GTHREAD_MUTEX_INIT;
......
/* Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, /* Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
2011 2011, 2012
Free Software Foundation, Inc. Free Software Foundation, Inc.
Contributed by Andy Vaught Contributed by Andy Vaught
F2003 I/O support contributed by Jerry DeLisle F2003 I/O support contributed by Jerry DeLisle
...@@ -919,13 +919,11 @@ open_internal (char *base, int length, gfc_offset offset) ...@@ -919,13 +919,11 @@ open_internal (char *base, int length, gfc_offset offset)
{ {
unix_stream *s; unix_stream *s;
s = get_mem (sizeof (unix_stream)); s = xcalloc (1, sizeof (unix_stream));
memset (s, '\0', sizeof (unix_stream));
s->buffer = base; s->buffer = base;
s->buffer_offset = offset; s->buffer_offset = offset;
s->logical_offset = 0;
s->active = s->file_length = length; s->active = s->file_length = length;
s->st.vptr = &mem_vtable; s->st.vptr = &mem_vtable;
...@@ -941,13 +939,11 @@ open_internal4 (char *base, int length, gfc_offset offset) ...@@ -941,13 +939,11 @@ open_internal4 (char *base, int length, gfc_offset offset)
{ {
unix_stream *s; unix_stream *s;
s = get_mem (sizeof (unix_stream)); s = xcalloc (1, sizeof (unix_stream));
memset (s, '\0', sizeof (unix_stream));
s->buffer = base; s->buffer = base;
s->buffer_offset = offset; s->buffer_offset = offset;
s->logical_offset = 0;
s->active = s->file_length = length; s->active = s->file_length = length;
s->st.vptr = &mem4_vtable; s->st.vptr = &mem4_vtable;
...@@ -965,13 +961,9 @@ fd_to_stream (int fd) ...@@ -965,13 +961,9 @@ fd_to_stream (int fd)
struct stat statbuf; struct stat statbuf;
unix_stream *s; unix_stream *s;
s = get_mem (sizeof (unix_stream)); s = xcalloc (1, sizeof (unix_stream));
memset (s, '\0', sizeof (unix_stream));
s->fd = fd; s->fd = fd;
s->buffer_offset = 0;
s->physical_offset = 0;
s->logical_offset = 0;
/* Get the current length of the file. */ /* Get the current length of the file. */
......
...@@ -759,6 +759,10 @@ internal_proto(get_mem); ...@@ -759,6 +759,10 @@ internal_proto(get_mem);
extern void *internal_malloc_size (size_t) __attribute__ ((malloc)); extern void *internal_malloc_size (size_t) __attribute__ ((malloc));
internal_proto(internal_malloc_size); internal_proto(internal_malloc_size);
extern void *xcalloc (size_t, size_t) __attribute__ ((malloc));
internal_proto(xcalloc);
/* environ.c */ /* environ.c */
extern int check_buffered (int); extern int check_buffered (int);
......
/* Memory management routines. /* Memory management routines.
Copyright 2002, 2005, 2006, 2007, 2009, 2010 Free Software Foundation, Inc. Copyright 2002, 2005, 2006, 2007, 2009, 2010, 2012
Free Software Foundation, Inc.
Contributed by Paul Brook <paul@nowt.org> Contributed by Paul Brook <paul@nowt.org>
This file is part of the GNU Fortran runtime library (libgfortran). This file is part of the GNU Fortran runtime library (libgfortran).
...@@ -59,3 +60,19 @@ internal_malloc_size (size_t size) ...@@ -59,3 +60,19 @@ internal_malloc_size (size_t size)
return get_mem (size); return get_mem (size);
} }
/* calloc wrapper that aborts on error. */
void *
xcalloc (size_t nmemb, size_t size)
{
if (nmemb * size == 0)
nmemb = size = 1;
void *p = calloc (nmemb, size);
if (!p)
os_error ("Allocating cleared memory failed");
return p;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment