+2004-12-14 Steve Ellcey <sje@cup.hp.com>
+
+ * libgfortran/io/transfer.c (us_read): Use memcpy/memset
+ instead of assignment to fill unaligned buffer.
+ (us_write): Ditto.
+ (next_record_w): Ditto.
+
2004-12-05 Steven G. Kargl <kargls@comcast.net>
PR libfortran/18966
static void
us_read (void)
{
- gfc_offset *p;
+ char *p;
int n;
+ gfc_offset i;
n = sizeof (gfc_offset);
- p = (gfc_offset *) salloc_r (current_unit->s, &n);
+ p = salloc_r (current_unit->s, &n);
if (p == NULL || n != sizeof (gfc_offset))
{
return;
}
- current_unit->bytes_left = *p;
+ memcpy (&i, p, sizeof (gfc_offset));
+ current_unit->bytes_left = i;
}
static void
us_write (void)
{
- gfc_offset *p;
+ char *p;
int length;
length = sizeof (gfc_offset);
- p = (gfc_offset *) salloc_w (current_unit->s, &length);
+ p = salloc_w (current_unit->s, &length);
if (p == NULL)
{
return;
}
- *p = 0; /* Bogus value for now. */
+ memset (p, '\0', sizeof (gfc_offset)); /* Bogus value for now. */
if (sfree (current_unit->s) == FAILURE)
generate_error (ERROR_OS, NULL);
if (p == NULL)
goto io_error;
- *((gfc_offset *) p) = m;
+ memcpy (p, &m, sizeof (gfc_offset));
if (sfree (current_unit->s) == FAILURE)
goto io_error;
if (p == NULL)
generate_error (ERROR_OS, NULL);
- *((gfc_offset *) p) = m;
+ memcpy (p, &m, sizeof (gfc_offset));
if (sfree (current_unit->s) == FAILURE)
goto io_error;