From 0d49a5ae2bad142f47bdaaa22e25c4909b41e7bd Mon Sep 17 00:00:00 2001 From: Dedmen Miller Date: Tue, 12 Feb 2019 11:05:57 +0100 Subject: [PATCH 1/2] Fix HandleDamageWounds memory leak --- addons/medical/functions/fnc_handleDamage_wounds.sqf | 4 +--- extensions/medical/handleDamage.cpp | 6 +++--- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/addons/medical/functions/fnc_handleDamage_wounds.sqf b/addons/medical/functions/fnc_handleDamage_wounds.sqf index fdc06621c50..bb943e29a45 100644 --- a/addons/medical/functions/fnc_handleDamage_wounds.sqf +++ b/addons/medical/functions/fnc_handleDamage_wounds.sqf @@ -30,10 +30,8 @@ private _woundID = _unit getVariable[QGVAR(lastUniqueWoundID), 1]; private _extensionOutput = "ace_medical" callExtension format ["HandleDamageWounds,%1,%2,%3,%4", _selectionName, _damage, _typeOfDamage, _woundID]; -private _painToAdd = 0; -private _woundsCreated = []; +(parseSimpleArray _extensionOutput) params ["_woundsCreated", "_painToAdd"]; -call compile _extensionOutput; { _x params ["", "_toAddClassID", "_bodyPartNToAdd"]; _foundIndex = -1; diff --git a/extensions/medical/handleDamage.cpp b/extensions/medical/handleDamage.cpp index 2a50ba4ee65..3dc51c3debd 100644 --- a/extensions/medical/handleDamage.cpp +++ b/extensions/medical/handleDamage.cpp @@ -34,7 +34,7 @@ namespace ace { double painToAdd = 0; wounds = GetInjuryInfoFor(typeOfDamage, amountOfDamage, selectionN, woundID); - stream << "_woundsCreated = ["; + stream << "[["; for (int i = 0; i < wounds.size(); ++i) { stream << wounds.at(i).AsString(); @@ -45,9 +45,9 @@ namespace ace { painToAdd += wounds.at(i).pain; } - stream << "];"; + stream << "],"; - stream << "_painToAdd = " << painToAdd << ";"; + stream << painToAdd << "]"; return stream.str(); } From b41fa5aa657f4edf1d4112c9f3e3f31623e015be Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sat, 30 Mar 2019 20:54:19 -0500 Subject: [PATCH 2/2] redo to moved func --- addons/medical_damage/functions/fnc_woundsHandler.sqf | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/addons/medical_damage/functions/fnc_woundsHandler.sqf b/addons/medical_damage/functions/fnc_woundsHandler.sqf index b1204bbf032..b1add6da925 100644 --- a/addons/medical_damage/functions/fnc_woundsHandler.sqf +++ b/addons/medical_damage/functions/fnc_woundsHandler.sqf @@ -38,10 +38,7 @@ private _extensionOutput = "ace_medical" callExtension format ["HandleDamageWoun TRACE_1("",_extensionOutput); // these are default values and modified by _extensionOutput -private _painToAdd = 0; -private _woundsCreated = []; - -call compile _extensionOutput; +(parseSimpleArray _extensionOutput) params ["_woundsCreated", "_painToAdd"]; // todo: Make the pain and bleeding calculations part of the extension again private _woundDamage = _damage / ((count _woundsCreated) max 1); // If the damage creates multiple wounds