Skip to content

Commit feafbef

Browse files
committed
FIX: leaks in TDarwinIOVolumns.createVolumns()
1 parent d534491 commit feafbef

1 file changed

Lines changed: 15 additions & 1 deletion

File tree

src/platform/unix/darwin/udarwinio.pas

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,8 @@ function IOServiceMatching( const name: pchar ): NSDictionary; cdecl; external;
6060

6161
function IOIteratorNext( iterator: io_iterator_t ): io_object_t; cdecl; external;
6262

63+
function IOObjectRelease( o: io_object_t ): kern_return_t; cdecl; external;
64+
6365
var
6466
kIOMasterPortDefault: mach_port_t; cvar; external;
6567

@@ -117,7 +119,6 @@ function TDarwinIOVolumns.createVolumns: NSArray;
117119

118120
bsdName: CFTypeRef;
119121
groupUUID: CFTypeRef;
120-
mntFromName: CFTypeRef;
121122
roleValue: CFTypeRef;
122123
removable: CFTypeRef;
123124
begin
@@ -150,8 +151,21 @@ function TDarwinIOVolumns.createVolumns: NSArray;
150151
volumnProperties.setValue_forKey( removable , Removable_KEY );
151152
volumns.addObject( volumnProperties );
152153
volumnProperties.release;
154+
155+
if Assigned( bsdName ) then
156+
CFRelease( bsdName );
157+
if Assigned( groupUUID ) then
158+
CFRelease( groupUUID );
159+
if Assigned( roleValue ) then
160+
CFRelease( roleValue );
161+
if Assigned( removable ) then
162+
CFRelease( removable );
163+
164+
IOObjectRelease( ioVolumnObject );
165+
IOObjectRelease( ioServiceObject );
153166
until False;
154167

168+
IOObjectRelease( ioIterator );
155169
Result:= volumns;
156170
end;
157171

0 commit comments

Comments
 (0)