Fix another place that was assuming that a local variable declared as
authorTom Lane
Sat, 1 Mar 2008 19:26:22 +0000 (19:26 +0000)
committerTom Lane
Sat, 1 Mar 2008 19:26:22 +0000 (19:26 +0000)
"struct varlena" would be at least word-aligned.  Per buildfarm results
from gypsy_moth.  I did a little bit of trawling for other instances of
this coding pattern, and didn't find any; but if we turn up any more
of them I think we'd better revert the "char [4]" patch and find another
way of making tuptoaster.c alignment-safe.

src/backend/storage/large_object/inv_api.c

index 3cc2864ea72f74685e4e598f079b2ce0145fe34b..95ed68d1baeec88b994c7a7d5cb8484ef5cd47c6 100644 (file)
@@ -24,7 +24,7 @@
  *
  *
  * IDENTIFICATION
- *   $PostgreSQL: pgsql/src/backend/storage/large_object/inv_api.c,v 1.127 2008/01/01 19:45:52 momjian Exp $
+ *   $PostgreSQL: pgsql/src/backend/storage/large_object/inv_api.c,v 1.128 2008/03/01 19:26:22 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -516,7 +516,8 @@ inv_write(LargeObjectDesc *obj_desc, const char *buf, int nbytes)
    struct
    {
        bytea       hdr;
-       char        data[LOBLKSIZE];
+       char        data[LOBLKSIZE];    /* make struct big enough */
+       int32       align_it;   /* ensure struct is aligned well enough */
    }           workbuf;
    char       *workb = VARDATA(&workbuf.hdr);
    HeapTuple   newtup;
@@ -707,7 +708,8 @@ inv_truncate(LargeObjectDesc *obj_desc, int len)
    struct
    {
        bytea       hdr;
-       char        data[LOBLKSIZE];
+       char        data[LOBLKSIZE];    /* make struct big enough */
+       int32       align_it;   /* ensure struct is aligned well enough */
    }           workbuf;
    char       *workb = VARDATA(&workbuf.hdr);
    HeapTuple   newtup;