librtree 0.8.8 → 0.8.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ext/rtree/rtree.c +2 -2
- data/lib/rtree.rb +25 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d796bcdad6e023f99009363c9c11a10d8c6dfc7b9c797b487925fa319ace78b9
|
4
|
+
data.tar.gz: 83d563781db1c1e1b6bd8b8790cbb68fbbd9a7f997dd49840ff8cba7bfcac3e8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e1a6c56ad9c14ae15c8ed047e980262477f36b672bb08c5cc584eff7b2fba3b20845e8671ee166f8929abbb5a7d11e596cca36da6d89a67cef167773ada20577
|
7
|
+
data.tar.gz: b699d85386e8ea991eb2d4e4816635b6a0d550e2dbeb36b670526186d0b72f72f8cf763d22ba6339fe595dc3f70c7d6f9e9bfa5714216ec125e0b1748c146d97
|
data/ext/rtree/rtree.c
CHANGED
@@ -139,10 +139,10 @@ static VALUE rt_update(VALUE self)
|
|
139
139
|
|
140
140
|
/*
|
141
141
|
The librtree API expects the search callback to return zero to
|
142
|
-
continue the search, non-zero to terminate.
|
142
|
+
continue the search, non-zero to terminate. I was expecting to
|
143
143
|
need to wrap the 'yield' in 'rescue's and 'ensure's to handle
|
144
144
|
exceptions and breaks, but find that doing nothing actually does
|
145
|
-
the right thing (see specs). The search
|
145
|
+
the right thing (see specs). The search implementation is just
|
146
146
|
a recursive search through the tree (as you would expect) so
|
147
147
|
there is no end-of-search cleanup to do, so I think this is all
|
148
148
|
just fine ... wild
|
data/lib/rtree.rb
CHANGED
@@ -8,6 +8,7 @@ class RTreeStyleBase ; end
|
|
8
8
|
|
9
9
|
require 'rtree/rtree'
|
10
10
|
require 'json'
|
11
|
+
require 'fcntl'
|
11
12
|
|
12
13
|
# @author RTree J. J. Green
|
13
14
|
#
|
@@ -61,6 +62,25 @@ require 'json'
|
|
61
62
|
#
|
62
63
|
class RTree < RTreeBase
|
63
64
|
|
65
|
+
module IOUtil
|
66
|
+
|
67
|
+
private
|
68
|
+
|
69
|
+
# In Ruby 3, the Fibres facility exploits non-blocking IO and so pipes
|
70
|
+
# are non-blocking by default, this buggers-up the deserialise method
|
71
|
+
# since there is short delay forking here -- so we reinstate blocking
|
72
|
+
# with some fairly low-level fcntl)2) magick.
|
73
|
+
|
74
|
+
def unset_nonblock(fd)
|
75
|
+
flags0 = fd.fcntl(Fcntl::F_GETFL, 0)
|
76
|
+
flags1 = flags0 & ~Fcntl::O_NONBLOCK
|
77
|
+
fd.fcntl(Fcntl::F_SETFL, flags1)
|
78
|
+
end
|
79
|
+
|
80
|
+
end
|
81
|
+
|
82
|
+
extend IOUtil
|
83
|
+
|
64
84
|
class << self
|
65
85
|
|
66
86
|
# Create a new RTree instance from JSON stream
|
@@ -184,6 +204,7 @@ class RTree < RTreeBase
|
|
184
204
|
def deserialise(string, encoding)
|
185
205
|
raise TypeError unless string.is_a? String
|
186
206
|
rd, wr = IO.pipe(encoding)
|
207
|
+
unset_nonblock(rd)
|
187
208
|
if fork then
|
188
209
|
wr.close
|
189
210
|
begin
|
@@ -478,6 +499,8 @@ end
|
|
478
499
|
#
|
479
500
|
class RTree::Style < RTreeStyleBase
|
480
501
|
|
502
|
+
extend RTree::IOUtil
|
503
|
+
|
481
504
|
class << self
|
482
505
|
|
483
506
|
# Create a new Style instance from JSON stream
|
@@ -500,6 +523,7 @@ class RTree::Style < RTreeStyleBase
|
|
500
523
|
def from_json(json)
|
501
524
|
raise TypeError unless json.is_a? String
|
502
525
|
rd, wr = IO.pipe(Encoding::UTF_8)
|
526
|
+
unset_nonblock(rd)
|
503
527
|
if fork then
|
504
528
|
wr.close
|
505
529
|
begin
|
@@ -545,5 +569,6 @@ class RTree::Style < RTreeStyleBase
|
|
545
569
|
end
|
546
570
|
|
547
571
|
alias_method :from_array, :from_a
|
572
|
+
|
548
573
|
end
|
549
574
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: librtree
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
4
|
+
version: 0.8.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- J.J. Green
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-08-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -127,7 +127,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
127
127
|
version: '0'
|
128
128
|
requirements:
|
129
129
|
- The librtree library (1.0.6 or later)
|
130
|
-
rubygems_version: 3.
|
130
|
+
rubygems_version: 3.2.3
|
131
131
|
signing_key:
|
132
132
|
specification_version: 4
|
133
133
|
summary: R-tree spatial index
|