From 325aeb4a654435cd055c390ea9e28e1e563c7507 Mon Sep 17 00:00:00 2001
From: Tom Lane <tgl@sss.pgh.pa.us>
Date: Sat, 12 Sep 2009 15:51:52 +0000
Subject: [PATCH] Install a hopefully-temporary workaround for Snow Leopard
 readdir() bug. If Apple doesn't fix that reasonably soon, we'll have to
 consider back-patching a workaround; but for now, just hack it in HEAD so
 that we can get buildfarm reports on HEAD from OS X machines. Per Jan Otto.

---
 src/backend/commands/tablespace.c | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/src/backend/commands/tablespace.c b/src/backend/commands/tablespace.c
index b81381a6ea8..eef2eb61e9f 100644
--- a/src/backend/commands/tablespace.c
+++ b/src/backend/commands/tablespace.c
@@ -37,7 +37,7 @@
  *
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/backend/commands/tablespace.c,v 1.61 2009/01/22 20:16:02 tgl Exp $
+ *	  $PostgreSQL: pgsql/src/backend/commands/tablespace.c,v 1.62 2009/09/12 15:51:52 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -612,6 +612,17 @@ remove_tablespace_directories(Oid tablespaceoid, bool redo)
 							subfile)));
 
 		pfree(subfile);
+
+		/*
+		 * OS X 10.6 and 10.6.1 have a bug in readdir() that causes the
+		 * next call to fail after deleting the current element.  Hopefully
+		 * that will be fixed real soon, but for the moment we have this
+		 * ugly kluge to restart the directory scan.
+		 */
+#ifdef __darwin__
+		FreeDir(dirdesc);
+		dirdesc = AllocateDir(location);
+#endif
 	}
 
 	FreeDir(dirdesc);
-- 
GitLab