rroonga 2.1.1 → 2.1.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,11 @@
1
1
  h1. NEWS
2
2
 
3
+ h2(#2-1-2). 2.1.2: 2013-01-04
4
+
5
+ h3. Fixes
6
+
7
+ * Fixed GC related crash. Table's domain and range are also marked.
8
+
3
9
  h2(#2-1-1). 2.1.1: 2012-12-29
4
10
 
5
11
  h3. Improvements
@@ -136,6 +136,28 @@ rb_grn_context_reset_floating_objects (RbGrnContext *rb_grn_context)
136
136
  GRN_OBJ_TABLE_HASH_KEY);
137
137
  }
138
138
 
139
+ void
140
+ rb_grn_context_mark_grn_id (grn_ctx *context, grn_id id)
141
+ {
142
+ grn_obj *object;
143
+ grn_user_data *user_data;
144
+ RbGrnObject *rb_grn_object;
145
+
146
+ object = grn_ctx_at(context, id);
147
+ if (!object)
148
+ return;
149
+
150
+ user_data = grn_obj_user_data(context, object);
151
+ if (!user_data)
152
+ return;
153
+
154
+ rb_grn_object = RB_GRN_OBJECT(user_data->ptr);
155
+ if (!rb_grn_object)
156
+ return;
157
+
158
+ rb_gc_mark(rb_grn_object->self);
159
+ }
160
+
139
161
  static void
140
162
  rb_grn_context_unlink_database (grn_ctx *context)
141
163
  {
@@ -62,20 +62,7 @@ rb_grn_database_mark_existing_ruby_object (grn_ctx *context, grn_obj *database)
62
62
  return;
63
63
 
64
64
  while ((id = grn_table_cursor_next(context, cursor)) != GRN_ID_NIL) {
65
- grn_obj *object;
66
- grn_user_data *user_data;
67
- RbGrnObject *rb_grn_object;
68
-
69
- object = grn_ctx_at(context, id);
70
- if (!object)
71
- continue;
72
- user_data = grn_obj_user_data(context, object);
73
- if (!user_data)
74
- continue;
75
- rb_grn_object = RB_GRN_OBJECT(user_data->ptr);
76
- if (!rb_grn_object)
77
- continue;
78
- rb_gc_mark(rb_grn_object->self);
65
+ rb_grn_context_mark_grn_id(context, id);
79
66
  }
80
67
  grn_table_cursor_close(context, cursor);
81
68
  }
@@ -123,6 +123,9 @@ rb_grn_table_mark (void *data)
123
123
  if (!context || !table)
124
124
  return;
125
125
 
126
+ rb_grn_context_mark_grn_id(context, table->header.domain);
127
+ rb_grn_context_mark_grn_id(context, grn_obj_get_range(context, table));
128
+
126
129
  if (!grn_obj_path(context, table))
127
130
  return;
128
131
 
data/ext/groonga/rb-grn.h CHANGED
@@ -76,7 +76,7 @@ RB_GRN_BEGIN_DECLS
76
76
 
77
77
  #define RB_GRN_MAJOR_VERSION 2
78
78
  #define RB_GRN_MINOR_VERSION 1
79
- #define RB_GRN_MICRO_VERSION 1
79
+ #define RB_GRN_MICRO_VERSION 2
80
80
 
81
81
  #define RB_GRN_QUERY_DEFAULT_MAX_EXPRESSIONS 32
82
82
 
@@ -309,6 +309,8 @@ void rb_grn_context_unregister_floating_object
309
309
  (RbGrnObject *rb_grn_object);
310
310
  void rb_grn_context_close_floating_objects(RbGrnContext *rb_grn_context);
311
311
  void rb_grn_context_reset_floating_objects(RbGrnContext *rb_grn_context);
312
+ void rb_grn_context_mark_grn_id (grn_ctx *context,
313
+ grn_id id);
312
314
  grn_ctx *rb_grn_context_ensure (VALUE *context);
313
315
  VALUE rb_grn_context_get_default (void);
314
316
  VALUE rb_grn_context_to_exception (grn_ctx *context,
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rroonga
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.1
4
+ version: 2.1.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ authors:
13
13
  autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
- date: 2012-12-29 00:00:00.000000000 Z
16
+ date: 2013-01-04 00:00:00.000000000 Z
17
17
  dependencies:
18
18
  - !ruby/object:Gem::Dependency
19
19
  name: pkg-config