/* write all mappings consecutively */
        len = src->num_mappings * sizeof(LogicalRewriteMappingData);
-       waldata = palloc(len);
-       waldata_start = waldata;
+       waldata_start = waldata = palloc(len);
 
        /*
         * collect data we need to write out, but don't modify ondisk data yet
            src->num_mappings--;
        }
 
+       Assert(src->num_mappings == 0);
+       Assert(waldata == waldata_start + len);
+
        /*
         * Note that we deviate from the usual WAL coding practices here,
         * check the above "Logical rewrite support" comment for reasoning.
                            written, len)));
        src->off += len;
 
-       Assert(src->num_mappings == 0);
-
        rdata[1].data = waldata_start;
        rdata[1].len = len;
        rdata[1].buffer = InvalidBuffer;
        /* write xlog record */
        XLogInsert(RM_HEAP2_ID, XLOG_HEAP2_REWRITE, rdata);
 
+       pfree(waldata_start);
    }
    Assert(state->rs_num_rewrite_mappings == 0);
 }