diff --git a/src/backend/replication/slot.c b/src/backend/replication/slot.c
index 42c78eabd4..45122b9ec9 100644
--- a/src/backend/replication/slot.c
+++ b/src/backend/replication/slot.c
@@ -535,6 +535,9 @@ ReplicationSlotCleanup(void)
 
 	Assert(MyReplicationSlot == NULL);
 
+	if (max_replication_slots <= 0)
+		return;
+
 restart:
 	LWLockAcquire(ReplicationSlotControlLock, LW_SHARED);
 	for (i = 0; i < max_replication_slots; i++)
@@ -1135,6 +1138,9 @@ InvalidateObsoleteReplicationSlots(XLogSegNo oldestSegno)
 {
 	XLogRecPtr	oldestLSN;
 
+	if (max_replication_slots <= 0)
+		return;
+
 	XLogSegNoOffsetToRecPtr(oldestSegno, 0, wal_segment_size, oldestLSN);
 
 restart:
@@ -1251,6 +1257,9 @@ CheckPointReplicationSlots(void)
 {
 	int			i;
 
+	if (max_replication_slots <= 0)
+		return;
+
 	elog(DEBUG1, "performing replication slot checkpoint");
 
 	/*
