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/CPanelProduction.h | 30 ++++++++++++++++++++++++++++--
1 files changed, 28 insertions(+), 2 deletions(-)
diff --git a/SourceCode/Bond/Servo/CPanelProduction.h b/SourceCode/Bond/Servo/CPanelProduction.h
index 60713f3..a4bd705 100644
--- a/SourceCode/Bond/Servo/CPanelProduction.h
+++ b/SourceCode/Bond/Servo/CPanelProduction.h
@@ -1,5 +1,10 @@
-#pragma once
+锘�#pragma once
#include "BlButton.h"
+#include <afxmt.h>
+#include "AccordionWnd.h"
+#include "ProductionStats.h"
+#include "CPageProdOverview.h"
+#include "CPageCtrlState.h"
// CPanelProduction dialog
class CPanelProduction : public CDialogEx
@@ -18,11 +23,22 @@
int m_nPanelWidth;
CBlButton m_btnClose;
HWND m_hPlaceholder;
+ CAccordionWnd* m_pAccordionWnd;
+
+ // Production shift summaries (updated by background thread)
+ ProductionShiftSummary m_daySummary;
+ ProductionShiftSummary m_nightSummary;
+ BOOL m_bShiftSummaryValid;
+ CCriticalSection m_csShiftSummary;
+ CWinThread* m_pStatsThread;
+ CEvent m_evStopStats;
+ CPageProdOverview* m_pPageProdOverview;
+ CPageCtrlState* m_pPageCtrlState;
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
-// 对话框数据
+// 瀵硅瘽妗嗘暟鎹�
#ifdef AFX_DESIGN_TIME
enum { IDD = IDD_PANEL_PRODUCTION };
#endif
@@ -35,4 +51,14 @@
afx_msg void OnSize(UINT nType, int cx, int cy);
afx_msg void OnVLineMoveX(NMHDR* nmhdr, LRESULT* result);
afx_msg void OnBnClickedButtonClose();
+
+ // Thread-safe snapshots for UI timer display
+ BOOL TryGetDayNightSummaries(ProductionShiftSummary& outDay, ProductionShiftSummary& outNight);
+
+private:
+ static UINT AFX_CDECL StatsThreadProc(LPVOID pParam);
+ void StartStatsThread();
+ void StopStatsThread();
+public:
+ afx_msg void OnTimer(UINT_PTR nIDEvent);
};
--
Gitblit v1.9.3