Skip to content

Commit 044f091

Browse files
authored
Merge pull request #76 from blindmonkey/master
Fix memory leak with setters
2 parents af47521 + 561c535 commit 044f091

File tree

2 files changed

+8
-3
lines changed

2 files changed

+8
-3
lines changed

Sources/Runtime/Factory/Factory.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ func setProperties(typeInfo: TypeInfo,
8383

8484
let valuePointer = pointer.advanced(by: property.offset)
8585
let sets = setters(type: property.type)
86-
sets.set(value: value, pointer: valuePointer)
86+
sets.set(value: value, pointer: valuePointer, initialize: true)
8787
}
8888
}
8989

Sources/Runtime/Utilities/GettersSetters.swift

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,14 @@ func getters(type: Any.Type) -> Getters.Type {
3434

3535
protocol Setters {}
3636
extension Setters {
37-
static func set(value: Any, pointer: UnsafeMutableRawPointer) {
37+
static func set(value: Any, pointer: UnsafeMutableRawPointer, initialize: Bool = false) {
3838
if let value = value as? Self {
39-
pointer.assumingMemoryBound(to: self).initialize(to: value)
39+
let boundPointer = pointer.assumingMemoryBound(to: self);
40+
if initialize {
41+
boundPointer.initialize(to: value)
42+
} else {
43+
boundPointer.pointee = value
44+
}
4045
}
4146
}
4247
}

0 commit comments

Comments
 (0)