From d7c88780e1df54f34563d60bd7fa01011d2eef03 Mon Sep 17 00:00:00 2001
From: chenluhua1980 <Chenluhua@qq.com>
Date: 星期一, 26 一月 2026 23:17:17 +0800
Subject: [PATCH] 1.CSVData.cpp 里 unserialize 用了 8*2、125*2,但 serialize 只写 8 + 125 字节。 m_svRawData.insert 的 end 指针是 pszBuffer + 125*2,没有用 index 计算,可能把无效区域一起拷进去。 一旦 size 实际是 133(不是 266),就会直接越界,堆会被破坏,m_svDatas.clear() 在销毁元素时崩。
---
SourceCode/Bond/Servo/CReadStep.h | 11 +++++++++++
1 files changed, 11 insertions(+), 0 deletions(-)
diff --git a/SourceCode/Bond/Servo/CReadStep.h b/SourceCode/Bond/Servo/CReadStep.h
index e5c88d2..8d048a4 100644
--- a/SourceCode/Bond/Servo/CReadStep.h
+++ b/SourceCode/Bond/Servo/CReadStep.h
@@ -11,7 +11,9 @@
public:
unsigned WorkingProc();
+ virtual void setReadContinue(BOOL bContinue) { m_bReadContinue = bContinue; };
virtual void setWriteSignalDev(int dev);
+ virtual void setReturnDev(int dev);
virtual void onReadSignal(int nSignalType);
virtual int onReadData();
virtual void init();
@@ -21,6 +23,8 @@
virtual int onTimeout();
inline void nextStep();
inline void resetStep();
+ virtual int setReturnCode(short code);
+ virtual int setReturnData(const char* pszData, unsigned int size);
protected:
HANDLE m_hWorkThreadHandle;
@@ -31,6 +35,13 @@
int m_nSignalType;
int m_nCurStep;
int m_nWriteSignalDev; // 对方BIT地址
+
+ // return code or data
+ protected:
+ char m_szReturnBuf[1024];
+ int m_nReturnDataSize;
+ int m_nReturnDevNo;
+ BOOL m_bReadContinue{ FALSE };
};
}
--
Gitblit v1.9.3