diff --git a/src/backend/storage/buffer/bufmgr.c b/src/backend/storage/buffer/bufmgr.c
index 716d795..3dc7dae 100644
--- a/src/backend/storage/buffer/bufmgr.c
+++ b/src/backend/storage/buffer/bufmgr.c
@@ -2113,7 +2113,6 @@ DropRelFileNodeAllBuffers(RelFileNodeBackend *rnodes, int nnodes)
 
 	for (i = 0; i < NBuffers; i++)
 	{
-		
 		RelFileNodeBackend *rnode = NULL;
 		volatile BufferDesc *bufHdr = &BufferDescriptors[i];
 		
@@ -2125,8 +2124,9 @@ DropRelFileNodeAllBuffers(RelFileNodeBackend *rnodes, int nnodes)
 			
 			rnode = rnodes;
 			
-		} else {
-			
+		}
+		else
+		{
 			rnode = bsearch((const void *) &(bufHdr->tag.rnode),
 											rnodes,
 											nnodes, sizeof(RelFileNodeBackend),
@@ -2135,7 +2135,6 @@ DropRelFileNodeAllBuffers(RelFileNodeBackend *rnodes, int nnodes)
 			/* buffer does not belong to any of the relations */
 			if (rnode == NULL)
 				continue;
-			
 		}
 
 		LockBufHdr(bufHdr);
diff --git a/src/backend/storage/smgr/smgr.c b/src/backend/storage/smgr/smgr.c
index 40a9d0b..fb9f8ab 100644
--- a/src/backend/storage/smgr/smgr.c
+++ b/src/backend/storage/smgr/smgr.c
@@ -422,9 +422,11 @@ smgrdounlink(SMgrRelation reln, bool isRedo)
 void smgrdounlinkall(SMgrRelation * rels, int nrels, bool isRedo)
 {
 	int i = 0;
-	RelFileNodeBackend rnodes[nrels];
+	RelFileNodeBackend *rnodes;
 	ForkNumber  forknum;
 
+	/* initialize an array which contains all relations to be dropped */
+	rnodes = palloc(sizeof(RelFileNodeBackend) * nrels);
 	for (i = 0; i < nrels; i++)
 	{
 		RelFileNodeBackend rnode = rels[i]->smgr_rnode;
@@ -458,7 +460,8 @@ void smgrdounlinkall(SMgrRelation * rels, int nrels, bool isRedo)
 	 * this backend, too, and thereby provide a backstop that we closed our
 	 * own smgr rel.
 	 */
-	for (i = 0; i < nrels; i++) {
+	for (i = 0; i < nrels; i++)
+	{
 		CacheInvalidateSmgr(rnodes[i]);
 	}
 
@@ -470,11 +473,14 @@ void smgrdounlinkall(SMgrRelation * rels, int nrels, bool isRedo)
 	 * xact.
 	 */
 
-	for (i = 0; i < nrels; i++) {
-		int         which = rels[i]->smgr_which;
+	for (i = 0; i < nrels; i++)
+	{
+		int			which = rels[i]->smgr_which;
 		for (forknum = 0; forknum <= MAX_FORKNUM; forknum++)
 			(*(smgrsw[which].smgr_unlink)) (rnodes[i], forknum, isRedo);
 	}
+
+	pfree(rnodes);
 }
 
 /*
