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