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