diff --git a/src/backend/access/gin/ginbulk.c b/src/backend/access/gin/ginbulk.c
index 2165428c54f4a4b1e2570b572e62c04c1e90de6b..b17e87cdb111e9bbf7e3086cf057c7fda9c3626b 100644
--- a/src/backend/access/gin/ginbulk.c
+++ b/src/backend/access/gin/ginbulk.c
@@ -8,7 +8,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *			$PostgreSQL: pgsql/src/backend/access/gin/ginbulk.c,v 1.11 2008/01/01 19:45:46 momjian Exp $
+ *			$PostgreSQL: pgsql/src/backend/access/gin/ginbulk.c,v 1.12 2008/06/29 21:04:01 tgl Exp $
  *-------------------------------------------------------------------------
  */
 
@@ -78,8 +78,8 @@ ginInsertData(BuildAccumulator *accum, EntryAccumulator *entry, ItemPointer heap
 }
 
 /*
- * This is basically the same as datumCopy(), but we duplicate some code
- * to avoid computing the datum size twice.
+ * This is basically the same as datumCopy(), but modified to count
+ * palloc'd space in accum.
  */
 static Datum
 getDatumCopy(BuildAccumulator *accum, Datum value)
@@ -91,16 +91,8 @@ getDatumCopy(BuildAccumulator *accum, Datum value)
 		res = value;
 	else
 	{
-		Size		realSize;
-		char	   *s;
-
-		realSize = datumGetSize(value, false, att[0]->attlen);
-
-		s = (char *) palloc(realSize);
-		accum->allocatedMemory += GetMemoryChunkSpace(s);
-
-		memcpy(s, DatumGetPointer(value), realSize);
-		res = PointerGetDatum(s);
+		res = datumCopy(value, false, att[0]->attlen);
+		accum->allocatedMemory += GetMemoryChunkSpace(DatumGetPointer(res));
 	}
 	return res;
 }