Commit aed6ee24 by Jerry DeLisle Committed by Jerry DeLisle

transfer.c (write_block): Add test for end-of-file condition, removed from mem_alloc_w_at.

2005-10-07  Jerry DeLisle  <jvdelisle@verizon.net>

        * io/transfer.c (write_block): Add test for end-of-file condition,
        removed from mem_alloc_w_at. (next_record_w): Clean up checks for
        NULL pointer returns from s_alloc_w.
        * io/unix.c (mem_alloc_w_at): Remove call to generate_error end-of-file.
        * io/write.c (write_float): Add checks for NULL pointer returns from
        write_block calls. (write_integer): Same.

From-SVN: r105092
parent 3e352c00
2005-10-07 Jerry DeLisle <jvdelisle@verizon.net>
* io/transfer.c (write_block): Add test for end-of-file condition,
removed from mem_alloc_w_at. (next_record_w): Clean up checks for
NULL pointer returns from s_alloc_w.
* io/unix.c (mem_alloc_w_at): Remove call to generate_error end-of-file.
* io/write.c (write_float): Add checks for NULL pointer returns from
write_block calls. (write_integer): Same.
2005-10-03 Jakub Jelinek <jakub@redhat.com>
* runtime/memory.c (allocate_size): Malloc 1 byte if size == 0.
......
......@@ -304,6 +304,12 @@ write_block (int length)
current_unit->bytes_left -= (gfc_offset)length;
dest = salloc_w (current_unit->s, &length);
if (dest == NULL)
{
generate_error (ERROR_END, NULL);
return NULL;
}
if (ioparm.size != NULL)
*ioparm.size += length;
......@@ -1559,16 +1565,20 @@ next_record_w (void)
{
bytes_left = (int) current_unit->bytes_left;
p = salloc_w (current_unit->s, &bytes_left);
if (p != NULL)
if (p == NULL)
{
memset(p, ' ', bytes_left);
current_unit->bytes_left = current_unit->recl;
generate_error (ERROR_END, NULL);
return;
}
memset(p, ' ', bytes_left);
current_unit->bytes_left = current_unit->recl;
}
else
{
length = 1;
p = salloc_w (current_unit->s, &length);
if (p==NULL)
goto io_error;
}
}
else
......
......@@ -630,10 +630,7 @@ mem_alloc_w_at (unix_stream * s, int *len, gfc_offset where)
return NULL;
if (m > s->file_length)
{
generate_error (ERROR_END, NULL);
return NULL;
}
return NULL;
s->logical_offset = m;
......
......@@ -832,6 +832,8 @@ write_float (fnode *f, const char *source, int len)
if (nb == 0) nb = 4;
p = write_block (nb);
if (p == NULL)
return;
if (nb < 3)
{
memset (p, '*',nb);
......@@ -903,6 +905,8 @@ write_float (fnode *f, const char *source, int len)
if (nb > 0)
{
p = write_block (nb);
if (p == NULL)
return;
memset (p, ' ', nb);
}
}
......@@ -1277,6 +1281,8 @@ write_integer (const char *source, int length)
if(width < digits )
width = digits ;
p = write_block (width) ;
if (p == NULL)
return;
if (no_leading_blank)
{
memcpy (p, q, digits);
......@@ -1284,8 +1290,8 @@ write_integer (const char *source, int length)
}
else
{
memset(p ,' ', width - digits) ;
memcpy (p + width - digits, q, digits);
memset(p ,' ', width - digits) ;
memcpy (p + width - digits, q, digits);
}
}
......
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