Skip to content

Commit 3b2975a

Browse files
committed
Fixes Solenoid Memory Leak
HAL ports can be freed after solenoid port is created
1 parent 06bbdc1 commit 3b2975a

File tree

3 files changed

+6
-3
lines changed

3 files changed

+6
-3
lines changed

WPILib/DoubleSolenoid.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -58,11 +58,11 @@ private void InitSolenoid()
5858
IntPtr port = GetPortWithModule((byte)ModuleNumber, (byte)m_forwardChannel);
5959
m_forwardSolenoid = InitializeSolenoidPort(port, ref status);
6060
CheckStatus(status);
61-
61+
FreePort(port);
6262
port = GetPortWithModule((byte)ModuleNumber, (byte)m_reverseChannel);
6363
m_reverseSolenoid = InitializeSolenoidPort(port, ref status);
6464
CheckStatus(status);
65-
65+
FreePort(port);
6666
HAL.Base.HAL.Report(ResourceType.kResourceType_Solenoid, (byte)m_forwardChannel, (byte)(ModuleNumber));
6767
HAL.Base.HAL.Report(ResourceType.kResourceType_Solenoid, (byte)m_reverseChannel, (byte)(ModuleNumber));
6868
LiveWindow.LiveWindow.AddActuator("DoubleSolenoid", ModuleNumber, m_forwardChannel, this);

WPILib/Solenoid.cs

+1
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ private void InitSolenoid()
4040
IntPtr port = GetPortWithModule((byte)ModuleNumber, (byte)m_channel);
4141
m_solenoidPort = InitializeSolenoidPort(port, ref status);
4242
CheckStatus(status);
43+
FreePort(port);
4344
LiveWindow.LiveWindow.AddActuator("Solenoid", ModuleNumber, m_channel, this);
4445
Report(ResourceType.kResourceType_Solenoid, (byte)m_channel, (byte)ModuleNumber);
4546
}

WPILib/SolenoidBase.cs

+3-1
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,10 @@ protected SolenoidBase(int moduleNumber)
3333
{
3434
ModuleNumber = moduleNumber;
3535
int status = 0;
36-
m_port = InitializeSolenoidPort(GetPortWithModule((byte) ModuleNumber, 0), ref status);
36+
IntPtr port = GetPortWithModule((byte)ModuleNumber, 0);
37+
m_port = InitializeSolenoidPort(port, ref status);
3738
CheckStatus(status);
39+
FreePort(port);
3840
}
3941
}
4042

0 commit comments

Comments
 (0)