clj 0.0.7.1 → 0.0.7.2

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.
Files changed (3) hide show
  1. data/ext/clj/parser.c +4 -16
  2. data/lib/clj/types.rb +5 -5
  3. metadata +5 -5
data/ext/clj/parser.c CHANGED
@@ -113,33 +113,25 @@ static NodeType next_type (STATE)
113
113
  static VALUE read_metadata (STATE)
114
114
  {
115
115
  VALUE result;
116
- VALUE* metadatas = NULL;
117
- size_t length = 0;
116
+ VALUE metadatas = rb_ary_new();
118
117
  size_t i;
119
118
 
120
119
  while (CURRENT == '^') {
121
- metadatas = realloc(metadatas, ++length * sizeof(VALUE));
122
-
123
120
  SEEK(1);
124
121
 
125
- metadatas[length - 1] = CALL(read_next);
122
+ rb_ary_push(metadatas, CALL(read_next));
126
123
  }
127
124
 
128
125
  result = CALL(read_next);
129
126
 
130
127
  if (!rb_respond_to(result, rb_intern("metadata="))) {
131
- free(metadatas);
132
-
133
128
  rb_raise(rb_eSyntaxError, "the object cannot hold metadata");
134
129
  }
135
130
 
136
- // FIXME: this could lead to a memleak if #metadata= raises
137
- for (i = 0; i < length; i++) {
138
- rb_funcall(result, rb_intern("metadata="), 1, metadatas[i]);
131
+ for (i = 0; i < RARRAY_LEN(metadatas); i++) {
132
+ rb_funcall(result, rb_intern("metadata="), 1, RARRAY_PTR(metadatas)[i]);
139
133
  }
140
134
 
141
- free(metadatas);
142
-
143
135
  return result;
144
136
  }
145
137
 
@@ -536,8 +528,6 @@ static VALUE t_parse (VALUE self)
536
528
  }
537
529
  }
538
530
 
539
- rb_gc_register_address(&source);
540
-
541
531
  string = StringValueCStr(source);
542
532
  result = read_next(self, string, &position);
543
533
 
@@ -547,8 +537,6 @@ static VALUE t_parse (VALUE self)
547
537
  rb_raise(rb_eSyntaxError, "there is some unconsumed input");
548
538
  }
549
539
 
550
- rb_gc_unregister_address(&source);
551
-
552
540
  return result;
553
541
  }
554
542
 
data/lib/clj/types.rb CHANGED
@@ -18,9 +18,9 @@ module Clojure
18
18
 
19
19
  def metadata= (value)
20
20
  metadata.merge! case value
21
- when Hash then value
22
- when Symbol then { value => true }
23
- when String then { :tag => value }
21
+ when ::Hash then value
22
+ when ::Symbol then { value => true }
23
+ when ::String then { :tag => value }
24
24
  else raise ArgumentError, 'the passed value is not suitable as metadata'
25
25
  end
26
26
  end
@@ -31,9 +31,9 @@ module Clojure
31
31
  '^' + if @metadata.length == 1
32
32
  piece = @metadata.first
33
33
 
34
- if piece.first.is_a?(Symbol) && piece.last == true
34
+ if piece.first.is_a?(::Symbol) && piece.last == true
35
35
  piece.first.to_clj(options)
36
- elsif piece.first == :tag && piece.last.is_a?(String)
36
+ elsif piece.first == :tag && piece.last.is_a?(::String)
37
37
  piece.last.to_clj(options)
38
38
  else
39
39
  @metadata.to_clj(options)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: clj
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7.1
4
+ version: 0.0.7.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2012-03-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
16
- requirement: &9939580 !ruby/object:Gem::Requirement
16
+ requirement: &13297340 !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: *9939580
24
+ version_requirements: *13297340
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rspec
27
- requirement: &9938800 !ruby/object:Gem::Requirement
27
+ requirement: &13295740 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,7 +32,7 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *9938800
35
+ version_requirements: *13295740
36
36
  description:
37
37
  email: meh@paranoici.org
38
38
  executables: []