The USE_CACHE_ALIGNING define now has a value: the number of *words*
in a cacheline.
diff --git a/Mac/mwerks/malloc/malloc.c b/Mac/mwerks/malloc/malloc.c
index 7b6e9fa..fdf91d5 100644
--- a/Mac/mwerks/malloc/malloc.c
+++ b/Mac/mwerks/malloc/malloc.c
@@ -61,8 +61,6 @@
 #define VCHECK
 #endif /* USE_MALLOC_DEBUG */
 
-#define USE_CACHE_ALIGN		/* Define for aligning everything on 16-byte boundaries */
-
 typedef unsigned char u_char;
 typedef unsigned long u_long;
 typedef unsigned int u_int;
@@ -104,9 +102,9 @@
 #define	ov_index	ovu.ovu_index
 #define	ov_rmagic	ovu.ovu_rmagic
 #define	ov_size		ovu.ovu_size
-#ifdef USE_CACHE_ALIGN
+#ifdef USE_CACHE_ALIGNED
 	struct cachealigner {
-		u_long	ovalign_1, ovalign_2, ovalign_3, ovalign_4;
+		u_long	ovalign[USE_CACHE_ALIGNED];
 	};
 #endif /* USE_CACHE_ALIGN */
 };
@@ -263,10 +261,19 @@
 #ifdef DEBUG2
 	ASSERT(nblks*sz == amt);
 #endif
+#ifdef USE_CACHE_ALIGNED
+	op = (union overhead *)NewPtr(amt+4*USE_CACHE_ALIGNED);
+#else
 	op = (union overhead *)NewPtr(amt);
+#endif
 	/* no more room! */
   	if (op == NULL)
   		return;
+#ifdef USE_CACHE_ALIGNED
+#define ALIGN_MASK (4*USE_CACHE_ALIGNED-1)
+	while ((long)op & ALIGN_MASK )
+		op = (union overhead *)((long)op+1);
+#endif /* USE_CACHE_ALIGNED */
 	/*
 	 * Add new memory allocated to that on
 	 * free list for this hash bucket.