diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c
index ba83123..a950518 100644
--- a/src/backend/access/transam/xlog.c
+++ b/src/backend/access/transam/xlog.c
@@ -1168,6 +1168,7 @@ PerformXLogInsert(int write_len, bool isLogSwitch, XLogRecord *rechdr,
 				 * record, and continue.
 				 */
 				XLogContRecord *contrecord;
+				int			freespace2;
 
 				memcpy(currpos, rdata->data, freespace);
 				rdata->data += freespace;
@@ -1191,7 +1192,18 @@ PerformXLogInsert(int write_len, bool isLogSwitch, XLogRecord *rechdr,
 				UpdateSlotCurrPos(myslot, CurrPos);
 
 				/* Now skip page header */
-				CurrPos = AdvanceXLogRecPtrToNextPage(CurrPos);
+//				CurrPos = AdvanceXLogRecPtrToNextPage(CurrPos);
+
+				freespace2 = INSERT_FREESPACE(CurrPos);
+				XLByteAdvance(CurrPos, freespace2);
+
+				currpos = GetXLogBuffer(CurrPos);
+                                ((XLogPageHeader)currpos)->xlp_info |= XLP_FIRST_IS_CONTRECORD;
+
+				if (CurrPos.xrecoff % XLogSegSize == 0)
+					CurrPos.xrecoff += SizeOfXLogLongPHD;
+				else
+					CurrPos.xrecoff += SizeOfXLogShortPHD;
 
 				currpos = GetXLogBuffer(CurrPos);
 
