scs 0.5.5 → 0.5.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8ff5e9f042f1fd5244d1b1bc59c6308c8f70586b473d38272157fcbe05463aeb
4
- data.tar.gz: 0ebb6044270c3eaa020c9965d08f51b35591f74e83594c756e901274eb001bf8
3
+ metadata.gz: daba43654b4362faba71b6ba3a761a425ff0ba09f4ab9a033cede2b35f872914
4
+ data.tar.gz: c52bbe956dc6b007b7acca5a2e3f987ff1f7916b741aa9caf05f456f1329685a
5
5
  SHA512:
6
- metadata.gz: 4794fed3a60f87162b82a45d1acf90ca5008b29e87325bf3de074dc99b1100c130e03516d83b13655caa1cc43dd00cb91d19fc454ed463a1f29ce06e3d195038
7
- data.tar.gz: 0e501a4181f3263fae54d4d98ab8b94284978cd94ccbf2c23b8d02699f35e63855011098fe2d580d5c1492cd61605a5914ef53b4c59456283f726cd28df13e3d
6
+ metadata.gz: ec75c690af938ab997fa83549a12164153ca30fcc2973d3ba75b33f22ed2d6cd7f6f79fdc87444e9cf81ecbde68dcc1ef40269defbaa7f244c6f456c78cdb2be
7
+ data.tar.gz: 9c135f24e8cf9318ee1ed3d5e1d3df8cdaa8fcd3ad19f5c116c4eff521657a4a3ace659aa45db9cfe2ed27e7e0e7ab6c5afc3a84d6c62d89705043246a9d740e
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ## 0.5.6 (2026-02-27)
2
+
3
+ - Fixed memory leak in `solve` method
4
+
1
5
  ## 0.5.5 (2026-01-11)
2
6
 
3
7
  - Updated SCS to 3.2.11
data/lib/scs/solver.rb CHANGED
@@ -10,12 +10,21 @@ module SCS
10
10
  settings = create_settings(settings)
11
11
  ccone = create_cone(cone)
12
12
 
13
- solution = calloc(ffi::Solution.size) # alloc clear memory
13
+ # alloc pointers and hold refs
14
+ solution_ptr = Fiddle::Pointer["\x00" * ffi::Solution.size] # alloc clear memory
15
+ x_ptr = Fiddle::Pointer.malloc(Fiddle::SIZEOF_DOUBLE * cdata.n, Fiddle::RUBY_FREE)
16
+ y_ptr = Fiddle::Pointer.malloc(Fiddle::SIZEOF_DOUBLE * cdata.m, Fiddle::RUBY_FREE)
17
+ s_ptr = Fiddle::Pointer.malloc(Fiddle::SIZEOF_DOUBLE * cdata.m, Fiddle::RUBY_FREE)
18
+
19
+ solution = ffi::Solution.new(solution_ptr)
20
+ solution.x = x_ptr
21
+ solution.y = y_ptr
22
+ solution.s = s_ptr
23
+
14
24
  info = ffi::Info.malloc(Fiddle::RUBY_FREE)
15
25
 
16
26
  ffi.scs(cdata, ccone, settings, solution, info)
17
27
 
18
- solution = ffi::Solution.new(solution)
19
28
  x = read_float_array(solution.x, cdata.n)
20
29
  y = read_float_array(solution.y, cdata.m)
21
30
  s = read_float_array(solution.s, cdata.m)
@@ -185,11 +194,6 @@ module SCS
185
194
  end
186
195
  end
187
196
 
188
- # alloc clear memory
189
- def calloc(size)
190
- Fiddle::Pointer["\x00" * size]
191
- end
192
-
193
197
  def ffi
194
198
  @ffi
195
199
  end
data/lib/scs/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module SCS
2
- VERSION = "0.5.5"
2
+ VERSION = "0.5.6"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: scs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.5
4
+ version: 0.5.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Kane