diff --git a/change.go b/change.go
index 7027cc0b5218e8ad36fe70e8981a89782f1aab78..95e7e462d02024af2b14bd9fd1c72bb39feb1278 100644
--- a/change.go
+++ b/change.go
@@ -18,12 +18,6 @@ func (s *Settings[C]) setConfigInternal(config C, lock bool) *Settings[C] {
 		s.Lock()
 	}
 
-	defer func() {
-		if lock {
-			s.Unlock()
-		}
-	}()
-
 	defer func() {
 
 		if len(changelog) > 0 {
@@ -40,6 +34,12 @@ func (s *Settings[C]) setConfigInternal(config C, lock bool) *Settings[C] {
 		}
 	}()
 
+	defer func() {
+		if lock {
+			s.Unlock()
+		}
+	}()
+
 	if err := validateConfig[C](config); err != nil {
 		s.errors = append(s.errors, err)
 		return s