From 510af519c370d7b6779c5a24e16bcab9ed12f9a8 Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期三, 04 六月 2025 17:59:16 +0800
Subject: [PATCH] 1.修复Slot设置设置指针错误闪退问题;

---
 SourceCode/Bond/Servo/CSlot.cpp      |   12 +++++++++---
 SourceCode/Bond/Servo/CEquipment.cpp |    2 +-
 SourceCode/Bond/Servo/CSlot.h        |    2 ++
 3 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/SourceCode/Bond/Servo/CEquipment.cpp b/SourceCode/Bond/Servo/CEquipment.cpp
index 7cb8a5b..098a942 100644
--- a/SourceCode/Bond/Servo/CEquipment.cpp
+++ b/SourceCode/Bond/Servo/CEquipment.cpp
@@ -326,7 +326,7 @@
 		else {
 			for (int i = 0; i < SLOT_MAX; i++) {
 				m_slot[i].serialize(ar);
-				if (m_slot[i].getContext() != nullptr) {
+				if (m_slot[i].getTempContext() != nullptr) {
 					CGlass* pGlass = theApp.m_model.m_glassPool.allocaGlass();
 					pGlass->serialize(ar);
 					m_slot[i].setContext(pGlass);
diff --git a/SourceCode/Bond/Servo/CSlot.cpp b/SourceCode/Bond/Servo/CSlot.cpp
index 8972986..958d5c6 100644
--- a/SourceCode/Bond/Servo/CSlot.cpp
+++ b/SourceCode/Bond/Servo/CSlot.cpp
@@ -11,6 +11,7 @@
 		m_bEnable = FALSE;
 		m_bLock = FALSE;
 		m_pContext = nullptr;
+		m_pTempContext = nullptr;
 	}
 
 	CSlot::~CSlot()
@@ -98,8 +99,8 @@
 
 	void CSlot::setContext(CContext* pContext)
 	{
-		if (pContext != nullptr) {
-			pContext->release();
+		if (m_pContext != nullptr) {
+			m_pContext->release();
 		}
 
 		m_pContext = pContext;
@@ -111,6 +112,11 @@
 	CContext* CSlot::getContext()
 	{
 		return m_pContext;
+	}
+
+	CContext* CSlot::getTempContext()
+	{
+		return m_pTempContext;
 	}
 
 	void CSlot::serialize(CArchive& ar)
@@ -131,7 +137,7 @@
 			ar >> m_nNo;
 			ar >> i32; m_materialsType = (MaterialsType)i32;
 			ReadString(ar, m_strName);
-			ar >> i64; m_pContext = (CContext*)i64;
+			ar >> i64; m_pTempContext = (CContext*)i64;
 			ar >> m_bEnable;
 			ar >> m_bLock;
 		}
diff --git a/SourceCode/Bond/Servo/CSlot.h b/SourceCode/Bond/Servo/CSlot.h
index 1d783d2..76461d8 100644
--- a/SourceCode/Bond/Servo/CSlot.h
+++ b/SourceCode/Bond/Servo/CSlot.h
@@ -27,6 +27,7 @@
 		void setName(const char* pszName);
 		BOOL isEmpty();
 		CContext* getContext();
+		CContext* getTempContext();
 		void setContext(CContext* pContext);
 		void serialize(CArchive& ar);
 
@@ -40,6 +41,7 @@
 		MaterialsType m_materialsType;
 		std::string m_strName;
 		CContext* m_pContext;
+		CContext* m_pTempContext;
 		BOOL m_bEnable;
 		BOOL m_bLock;
 	};

--
Gitblit v1.9.3