rrd-ffi 0.2.9 → 0.2.10

Sign up to get free protection for your applications and to get access to all the features.
@@ -9,6 +9,9 @@
9
9
  * TODO: Add memory leak test
10
10
  * TODO: Add tune methods to RRD::Base instance
11
11
 
12
+ == 2011-04-11 version 0.2.10
13
+
14
+ * Fixes Segmentation Fault when using in a multi-thread environment
12
15
 
13
16
  == 2010-08-31 version 0.2.8
14
17
 
@@ -3,7 +3,7 @@ module RRD
3
3
  module Version #:nodoc: all
4
4
  MAJOR = 0
5
5
  MINOR = 2
6
- PATCH = 9
6
+ PATCH = 10
7
7
  STRING = "#{MAJOR}.#{MINOR}.#{PATCH}"
8
8
  end
9
9
  end
@@ -382,24 +382,24 @@ module RRD
382
382
 
383
383
  private
384
384
  def empty_pointer
385
- @mem_ptrs ||= []
385
+ mem_ptrs ||= []
386
386
  ptr = FFI::MemoryPointer.new(:pointer)
387
- @mem_ptrs << ptr
387
+ mem_ptrs << ptr
388
388
  ptr
389
389
  end
390
390
 
391
391
  # FIXME: remove clear_error from here
392
392
  def to_pointer(array_of_strings)
393
393
  clear_error
394
- @strptrs = []
395
- array_of_strings.each {|item| @strptrs << FFI::MemoryPointer.from_string(item)}
394
+ str_ptrs = []
395
+ array_of_strings.each {|item| str_ptrs << FFI::MemoryPointer.from_string(item)}
396
396
 
397
- @argv = FFI::MemoryPointer.new(:pointer, @strptrs.length)
398
- @strptrs.each_with_index do |p, i|
399
- @argv[i].put_pointer(0, p)
397
+ argv = FFI::MemoryPointer.new(:pointer, str_ptrs.length)
398
+ str_ptrs.each_with_index do |p, i|
399
+ argv[i].put_pointer(0, p)
400
400
  end
401
401
 
402
- @argv
402
+ argv
403
403
  end
404
404
 
405
405
  def free_in_rrd(*pointers)
@@ -407,17 +407,26 @@ module RRD
407
407
  end
408
408
 
409
409
  def free_pointers
410
- @strptrs ||= []
411
- @mem_ptrs ||= []
410
+ str_ptrs ||= []
411
+ mem_ptrs ||= []
412
412
 
413
- @strptrs.each{|str_ptr| str_ptr.free}
414
- @mem_ptrs.each{|mem_ptr| mem_ptr.free}
415
- @argv.free unless @argv.nil?
413
+ str_ptrs.each{|str_ptr| str_ptr.free}
414
+ mem_ptrs.each{|mem_ptr| mem_ptr.free}
415
+ argv.free unless argv.nil?
416
416
 
417
- @argv = nil
418
- @str_ptrs = nil
419
- @mem_ptrs = nil
417
+ argv = nil
418
+ str_ptrs = nil
419
+ mem_ptrs = nil
420
420
  end
421
+
422
+ [:str_ptrs, :mem_ptrs, :argv].each do |name|
423
+ define_method name do
424
+ Thread.current[name]
425
+ end
426
+ define_method "#{name}=" do |value|
427
+ Thread.current[name] = value
428
+ end
429
+ end
421
430
 
422
431
  end
423
432
  end
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "rrd-ffi"
8
- s.version = "0.2.9"
8
+ s.version = "0.2.10"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["morellon"]
12
- s.date = "2012-03-23"
12
+ s.date = "2012-04-12"
13
13
  s.description = "Provides bindings for many RRD functions (using ffi gem and librrd), as well as DSLs for graphic and rrd building. You must have librrd in your system!"
14
14
  s.email = "morellon@gmail.com"
15
15
  s.extra_rdoc_files = [
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rrd-ffi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.9
4
+ version: 0.2.10
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-03-23 00:00:00.000000000 Z
12
+ date: 2012-04-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: &2152258360 !ruby/object:Gem::Requirement
16
+ requirement: &2152158960 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *2152258360
24
+ version_requirements: *2152158960
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: ffi
27
- requirement: &2152284560 !ruby/object:Gem::Requirement
27
+ requirement: &2152156840 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *2152284560
35
+ version_requirements: *2152156840
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: activesupport
38
- requirement: &2152282180 !ruby/object:Gem::Requirement
38
+ requirement: &2152155000 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *2152282180
46
+ version_requirements: *2152155000
47
47
  description: Provides bindings for many RRD functions (using ffi gem and librrd),
48
48
  as well as DSLs for graphic and rrd building. You must have librrd in your system!
49
49
  email: morellon@gmail.com