multi_string_replace 1.0.4 → 1.0.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: '03680f4522d98a7a162df95c1151feedabe821febc15a03c7a98a6996dd43cc1'
4
- data.tar.gz: 80222e5675b3310fd079e6099026f8fa584d77542a0a34a30a3c6c3c67643cdb
3
+ metadata.gz: 72d264c0f004c543ee366c43752b7d80b411a8cb95143c6e875a3426fe714b37
4
+ data.tar.gz: f7f1fc6527d23d292608b177af9522c250b18b9d8edda50159c50a3da728ec4f
5
5
  SHA512:
6
- metadata.gz: 6bcda8e829e5fd9e747c567a44c09363f304bbc8162d661418fb491f6626019c158d8a60345bb814cab42598c3830d884e6b8b70b20215d9614cb36d6913928e
7
- data.tar.gz: 3f2895d64ba1d7560e866104f499a592767fa1dd161c1ff3d975126091d8330f06e85e25f37182de46f05c5dcb51a3f8ed4e38b352b78c8a1955dde1fdca5396
6
+ metadata.gz: dd1a23c3980abb96c2016063b67c05aec5931af39606736763e427809ba6aec4892a321372bd4ff775108581192be19d992efab17509fc64ea83672015a29966
7
+ data.tar.gz: 365a8a589f2950c7b9641a03ac56ca29a3cbf865579013df03c0a52b61fc4d58a7c51e09ad435b7b3876ebfc22dc33c27df63a931b2972bd66afd63aad0ccf14
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- multi_string_replace (1.0.4)
4
+ multi_string_replace (1.0.6)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -28,11 +28,11 @@ PLATFORMS
28
28
  ruby
29
29
 
30
30
  DEPENDENCIES
31
- bundler (~> 1.16)
31
+ bundler (~> 2.3.26)
32
32
  multi_string_replace!
33
33
  rake
34
34
  rake-compiler
35
35
  rspec (~> 3.0)
36
36
 
37
37
  BUNDLED WITH
38
- 1.16.5
38
+ 2.3.26
@@ -88,13 +88,16 @@ bool __aho_connect_link(struct aho_trie_node* p, struct aho_trie_node* q)
88
88
  struct aho_trie_node *pf = NULL;
89
89
  int i = 0;
90
90
  /* is root node */
91
- if (p->parent == NULL)
91
+ if (p->failure_link == NULL || p->parent == NULL)
92
92
  {
93
93
  q->failure_link = p;
94
94
  return true;
95
95
  }
96
96
 
97
97
  pf = p->failure_link;
98
+
99
+ if( pf == NULL )
100
+ return true;
98
101
 
99
102
  /* check child node of failure link(p) */
100
103
  if (pf->child_list[q->text] != NULL)
@@ -207,6 +210,9 @@ bool __aho_find_trie_node(struct aho_trie_node** restrict start, const unsigned
207
210
 
208
211
  search_node = *start;
209
212
 
213
+ if (search_node == NULL)
214
+ return false;
215
+
210
216
  if (search_node->child_list[(unsigned int)text] != NULL)
211
217
  {
212
218
  /* find it! move to find child node! */
@@ -225,7 +231,7 @@ struct aho_text_t* aho_find_trie_node(struct aho_trie_node** restrict start, con
225
231
  /* not found!
226
232
  * when root node stop
227
233
  */
228
- if( (*start)->parent == NULL)
234
+ if( *start == NULL || (*start)->parent == NULL)
229
235
  {
230
236
  return NULL;
231
237
  }
@@ -49,7 +49,7 @@ int aho_add_match_text(struct ahocorasick * restrict aho, const char* text, unsi
49
49
 
50
50
  a_text->id = aho->accumulate_text_id++;
51
51
 
52
- memcpy(a_text->text, text, len);
52
+ memcpy(a_text->text, text, len + 1);
53
53
 
54
54
  a_text->len = len;
55
55
  a_text->prev = NULL;
@@ -90,15 +90,18 @@ bool aho_del_match_text(struct ahocorasick * restrict aho, const int id)
90
90
  if (iter == aho->text_list_head)
91
91
  {
92
92
  aho->text_list_head = iter->next;
93
+ free(iter->text);
93
94
  }
94
95
  else if (iter == aho->text_list_tail)
95
96
  {
96
97
  aho->text_list_tail = iter->prev;
98
+ free(iter->text);
97
99
  }
98
100
  else
99
101
  {
100
102
  iter->prev->next = iter->next;
101
103
  iter->next->prev = iter->prev;
104
+ free(iter->text);
102
105
  }
103
106
  free(iter);
104
107
  aho->text_list_len--;
@@ -226,7 +229,7 @@ VALUE aho_replace_text(struct ahocorasick * restrict aho, const char* data,
226
229
  last_concat_pos = i + 1;
227
230
  }
228
231
 
229
- if (last_concat_pos < data_len - 1) {
232
+ if (last_concat_pos < data_len) {
230
233
  rb_str_cat(main_result, &data[last_concat_pos], data_len - last_concat_pos);
231
234
  }
232
235
 
@@ -55,6 +55,7 @@ VALUE multi_string_match(VALUE self, VALUE body, VALUE keys)
55
55
 
56
56
  aho_create_trie(&aho);
57
57
  aho_register_match_callback(result, &aho, callback_match_pos, (void*)target);
58
+
58
59
  aho_findtext(&aho, target, RSTRING_LEN(body));
59
60
  aho_destroy(&aho);
60
61
  return result;
@@ -99,7 +100,6 @@ VALUE multi_string_replace(VALUE self, VALUE body, VALUE replace)
99
100
  aho_add_match_text(&aho, StringValuePtr(entry), RSTRING_LEN(entry));
100
101
  }
101
102
  aho_create_trie(&aho);
102
-
103
103
  VALUE result = aho_replace_text(&aho, target, RSTRING_LEN(body), values, value_sizes, ruby_val);
104
104
  aho_destroy(&aho);
105
105
  return result;
@@ -1,3 +1,3 @@
1
1
  module MultiStringReplace
2
- VERSION = "1.0.4"
2
+ VERSION = "1.0.6"
3
3
  end
@@ -33,7 +33,7 @@ Gem::Specification.new do |spec|
33
33
  spec.require_paths = ["lib"]
34
34
  spec.extensions = ["ext/multi_string_replace/extconf.rb"]
35
35
 
36
- spec.add_development_dependency "bundler", "~> 1.16"
36
+ spec.add_development_dependency "bundler", "~> 2.3.26"
37
37
  spec.add_development_dependency "rake"
38
38
  spec.add_development_dependency "rspec", "~> 3.0"
39
39
  spec.add_development_dependency "rake-compiler"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: multi_string_replace
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.4
4
+ version: 1.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joseph Dayo
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-12-15 00:00:00.000000000 Z
11
+ date: 2022-12-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.16'
19
+ version: 2.3.26
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.16'
26
+ version: 2.3.26
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -87,6 +87,7 @@ files:
87
87
  - bin/benchmark.rb
88
88
  - bin/console
89
89
  - bin/setup
90
+ - ext/multi_string_replace/.sitearchdir.-.multi_string_replace.time
90
91
  - ext/multi_string_replace/aho_queue.c
91
92
  - ext/multi_string_replace/aho_queue.h
92
93
  - ext/multi_string_replace/aho_text.h
@@ -106,7 +107,7 @@ licenses:
106
107
  - MIT
107
108
  metadata:
108
109
  allowed_push_host: https://rubygems.org
109
- post_install_message:
110
+ post_install_message:
110
111
  rdoc_options: []
111
112
  require_paths:
112
113
  - lib
@@ -121,9 +122,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
121
122
  - !ruby/object:Gem::Version
122
123
  version: '0'
123
124
  requirements: []
124
- rubyforge_project:
125
- rubygems_version: 2.7.7
126
- signing_key:
125
+ rubygems_version: 3.1.6
126
+ signing_key:
127
127
  specification_version: 4
128
128
  summary: A fast multiple string replace library for ruby. Uses a C implementation
129
129
  of the Aho–Corasick Algorithm