Fix structure alignment and array wlk bugs
diff --git a/src/fcpat.c b/src/fcpat.c
index 4da5747..28abe55 100644
--- a/src/fcpat.c
+++ b/src/fcpat.c
@@ -1,5 +1,5 @@
 /*
- * $XFree86: xc/lib/fontconfig/src/fcpat.c,v 1.15 2002/08/22 07:36:45 keithp Exp $
+ * $XFree86: xc/lib/fontconfig/src/fcpat.c,v 1.16tsi Exp $
  *
  * Copyright © 2000 Keith Packard, member of The XFree86 Project, Inc.
  *
@@ -276,8 +276,8 @@
 
 struct _FcValueListEnt {
     FcValueListEnt  *next;
-    FcChar32	    hash;
     FcValueList	    *list;
+    FcChar32	    hash, pad;
 };
 
 static int	    FcValueListFrozenCount[FcTypeLangSet + 1];
@@ -336,7 +336,7 @@
     e->list = (FcValueList *) (e + 1);
     strs = (FcChar8 *) (e->list + n);
     new = e->list;
-    for (l = h; l; l = l->next)
+    for (l = h; l; l = l->next, new++)
     {
 	if (l->value.type == FcTypeString)
 	{
@@ -346,7 +346,10 @@
 	    strs += strlen ((char *) strs) + 1;
 	}
 	else
-	    new->value = FcValueSave (l->value);
+	{
+	    new->value = l->value;
+	    new->value = FcValueSave (new->value);
+	}
 	new->binding = l->binding;
 	if (l->next)
 	    new->next = new + 1;