From 978a2c9dc0c6c554ed35f046e33321e2c250fcf2 Mon Sep 17 00:00:00 2001
From: ensiouel <ensiouel@gmail.com>
Date: Wed, 17 Jan 2024 16:02:32 +0300
Subject: [PATCH] =?UTF-8?q?feature:=20=D0=B2=20=D0=BF=D0=B0=D0=BA=D0=B5?=
 =?UTF-8?q?=D1=82=20data=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?=
 =?UTF-8?q?=D0=BD=D0=B0=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D0=B0?=
 =?UTF-8?q?=20=D0=BF=D1=80=D0=B8=20=D1=83=D1=81=D1=82=D0=B0=D0=BD=D0=BE?=
 =?UTF-8?q?=D0=B2=D0=BA=D0=B5=20=D0=B7=D0=BD=D0=B0=D1=87=D0=B5=D0=BD=D0=B8?=
 =?UTF-8?q?=D1=8F=20=D0=BD=D0=B0=20=D1=82=D0=BE,=20=D0=B8=D0=BD=D0=B8?=
 =?UTF-8?q?=D1=86=D0=B8=D0=B0=D0=BB=D0=B8=D0=B7=D0=B8=D1=80=D0=BE=D0=B2?=
 =?UTF-8?q?=D0=B0=D0=BD=D0=B0=20=D0=BB=D0=B8=20map?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 pkg/data/data.go      | 4 ++++
 pkg/data/data_test.go | 8 ++++++++
 2 files changed, 12 insertions(+)

diff --git a/pkg/data/data.go b/pkg/data/data.go
index 0540055a..c1d0f63f 100644
--- a/pkg/data/data.go
+++ b/pkg/data/data.go
@@ -177,6 +177,10 @@ func set(path []string, data, value any) error {
 
 	switch v := data.(type) {
 	case map[string]interface{}:
+		if v == nil {
+			return nil
+		}
+
 		if len(path) == 1 {
 
 			if _, ok := value.(DeleteValueType); ok {
diff --git a/pkg/data/data_test.go b/pkg/data/data_test.go
index 785eefbb..ecfacbbf 100644
--- a/pkg/data/data_test.go
+++ b/pkg/data/data_test.go
@@ -8,6 +8,8 @@ import (
 )
 
 func TestDelete(t *testing.T) {
+	var uninitializedMap map[string]any
+
 	tests := []struct {
 		name  string
 		in    interface{}
@@ -62,6 +64,12 @@ func TestDelete(t *testing.T) {
 				},
 			}, "z": "2"},
 		},
+		{
+			"object field from uninitialized map",
+			uninitializedMap,
+			"a.b",
+			uninitializedMap,
+		},
 		// Решили что автоматически удалять пустые объекты/слайсы не нужно
 		//{
 		//	"empty object",
-- 
GitLab