From a6562c15b8c11b6cb62bfd0205e88d94c7acb704 Mon Sep 17 00:00:00 2001 From: ricardoofnl Date: Wed, 2 Sep 2026 23:57:51 +0700 Subject: [PATCH] [saco] Match `CIntArray::SetSize` and `~CIntArray`; CUnkClass5 field_0/field_4 are a realloc-grown int array --- saco/unkclass5.cpp | 31 +++++++++++++++++++++++++++++-- saco/unkclass5.h | 15 +++++++++++++-- 2 files changed, 42 insertions(+), 4 deletions(-) diff --git a/saco/unkclass5.cpp b/saco/unkclass5.cpp index 9244689..f03cd00 100644 --- a/saco/unkclass5.cpp +++ b/saco/unkclass5.cpp @@ -1,10 +1,37 @@ #include "main.h" +CIntArray::~CIntArray() +{ + SetSize(0); +} + +bool CIntArray::SetSize(unsigned int nSize) +{ + if(!nSize) { + if(m_pData) { + free(m_pData); + m_pData = NULL; + } + m_nSize = 0; + return true; + } + + int *pNew = (int *)realloc(m_pData, nSize * sizeof(int)); + if(!pNew) return false; + + m_pData = pNew; + if(m_nSize < nSize) { + for(unsigned int i = m_nSize; i != nSize; i++) + m_pData[i] = 0; + } + + m_nSize = nSize; + return true; +} + CUnkClass5::CUnkClass5(IDirect3DDevice9 *pD3DDevice) { - field_0 = 0; - field_4 = 0; m_pD3DDevice = pD3DDevice; m_pDialog = NULL; field_30 = 0; diff --git a/saco/unkclass5.h b/saco/unkclass5.h index ec3b34d..a2915be 100644 --- a/saco/unkclass5.h +++ b/saco/unkclass5.h @@ -1,11 +1,22 @@ #pragma once +class CIntArray +{ +public: + CIntArray() { m_pData = NULL; m_nSize = 0; } + ~CIntArray(); + + bool SetSize(unsigned int nSize); + + int *m_pData; + unsigned int m_nSize; +}; + class CUnkClass5 { private: - int field_0; - int field_4; + CIntArray m_Array; IDirect3DDevice9* m_pD3DDevice; char _gapC[8]; int field_14;