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
This commit is contained in:
parent
0651865170
commit
f4471acbe3
@ -1,3 +1,16 @@
|
|||||||
|
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
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* 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)
|
|||||||
|
|
||||||
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
|
|||||||
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;
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* 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)
|
|||||||
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)
|
|||||||
|
|
||||||
/* 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;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* 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)
|
|||||||
{
|
{
|
||||||
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)
|
|||||||
{
|
{
|
||||||
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)
|
|||||||
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);
|
|||||||
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);
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
/* 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)
|
|||||||
|
|
||||||
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;
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user