clj 0.0.7.1 → 0.0.7.2

Sign up to get free protection for your applications and to get access to all the features.
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: []