do_sqlite3 0.10.8 → 0.10.9

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,7 @@
1
+ ## 0.10.9 2012-08-13
2
+
3
+ * Fix segfault when loading custom extensions
4
+
1
5
  ## 0.10.8 2012-02-10
2
6
 
3
7
  * Ruby 1.9.3 compatibility on Windows
data/Rakefile CHANGED
@@ -15,7 +15,7 @@ JRUBY = RUBY_PLATFORM =~ /java/
15
15
  IRONRUBY = defined?(RUBY_ENGINE) && RUBY_ENGINE == 'ironruby'
16
16
  WINDOWS = Gem.win_platform? || (JRUBY && ENV_JAVA['os.name'] =~ /windows/i)
17
17
  SUDO = WINDOWS ? '' : ('sudo' unless ENV['SUDOLESS'])
18
- BINARY_VERSION = '3070600'
18
+ BINARY_VERSION = '3071300'
19
19
 
20
20
  CLEAN.include(%w[ {tmp,pkg}/ **/*.{o,so,bundle,jar,log,a,gem,dSYM,obj,pdb,exp,DS_Store,rbc,db} ext/do_sqlite3/Makefile ext-java/target ])
21
21
 
@@ -185,6 +185,10 @@ VALUE data_objects_parse_date(const char *date) {
185
185
  return Qnil;
186
186
  }
187
187
 
188
+ if(!year && !month && !day) {
189
+ return Qnil;
190
+ }
191
+
188
192
  return rb_funcall(rb_cDate, ID_NEW, 3, INT2NUM(year), INT2NUM(month), INT2NUM(day));
189
193
  }
190
194
 
@@ -237,6 +241,10 @@ VALUE data_objects_parse_date_time(const char *date) {
237
241
  fmt_datetime = strchr(date, '.') ? _fmt_datetime_tz_subsec : _fmt_datetime_tz_normal;
238
242
  tokens_read = sscanf(date, fmt_datetime, &year, &month, &day, &hour, &min, &sec, &hour_offset, &minute_offset);
239
243
 
244
+ if(!year && !month && !day && !hour && !min && !sec) {
245
+ return Qnil;
246
+ }
247
+
240
248
  switch (tokens_read) {
241
249
  case 8:
242
250
  minute_offset *= hour_offset < 0 ? -1 : 1;
@@ -172,7 +172,8 @@ VALUE do_sqlite3_cConnection_dispose(VALUE self) {
172
172
  return Qfalse;
173
173
  }
174
174
 
175
- sqlite3 *db = DATA_PTR(connection_container);
175
+ sqlite3 *db;
176
+ Data_Get_Struct(connection_container, sqlite3, db);
176
177
 
177
178
  if (!db) {
178
179
  return Qfalse;
@@ -16,12 +16,15 @@ VALUE do_sqlite3_cExtension_enable_load_extension(VALUE self, VALUE on) {
16
16
  if (connection == Qnil) { return Qfalse; }
17
17
 
18
18
  // Retrieve the actual connection from the
19
- connection = rb_iv_get(self, "@connection");
19
+ VALUE sqlite3_connection = rb_iv_get(connection, "@connection");
20
20
 
21
- if (connection == Qnil) { return Qfalse; }
21
+ if (sqlite3_connection == Qnil) { return Qfalse; }
22
22
 
23
23
  sqlite3 *db;
24
24
 
25
+ Data_Get_Struct(sqlite3_connection, sqlite3, db);
26
+
27
+
25
28
  if (!(db = DATA_PTR(connection))) {
26
29
  return Qfalse;
27
30
  }
@@ -40,26 +43,23 @@ VALUE do_sqlite3_cExtension_enable_load_extension(VALUE self, VALUE on) {
40
43
 
41
44
  VALUE do_sqlite3_cExtension_load_extension(VALUE self, VALUE path) {
42
45
  #ifdef HAVE_SQLITE3_ENABLE_LOAD_EXTENSION
43
- VALUE id_connection = rb_intern("connection");
44
- VALUE connection = rb_funcall(self, id_connection, 0);
46
+ VALUE connection = rb_iv_get(self, "@connection");
45
47
 
46
48
  if (connection == Qnil) { return Qfalse; }
47
49
 
48
- // Retrieve the actual connection from the
49
- connection = rb_iv_get(self, "@connection");
50
+ // Retrieve the actual connection from the object
51
+ VALUE sqlite3_connection = rb_iv_get(connection, "@connection");
50
52
 
51
- if (connection == Qnil) { return Qfalse; }
53
+ if (sqlite3_connection == Qnil) { return Qfalse; }
52
54
 
53
55
  sqlite3 *db;
54
56
 
55
- if (!(db = DATA_PTR(connection))) {
56
- return Qfalse;
57
- }
57
+ Data_Get_Struct(sqlite3_connection, sqlite3, db);
58
58
 
59
59
  const char *extension_path = rb_str_ptr_readonly(path);
60
- char *errmsg;
60
+ char *errmsg = sqlite3_malloc(1024);
61
61
 
62
- if (!(errmsg = sqlite3_malloc(1024))) {
62
+ if (!errmsg) {
63
63
  return Qfalse;
64
64
  }
65
65
 
@@ -72,6 +72,7 @@ VALUE do_sqlite3_cExtension_load_extension(VALUE self, VALUE path) {
72
72
  rb_exc_raise(errexp);
73
73
  }
74
74
 
75
+ sqlite3_free(errmsg);
75
76
  return Qtrue;
76
77
  #else
77
78
  return Qfalse;
@@ -11,7 +11,7 @@ if RUBY_PLATFORM =~ /java/
11
11
 
12
12
  begin
13
13
  java.lang.Thread.currentThread.getContextClassLoader().loadClass(DataObjects::Sqlite3::JDBC_DRIVER, true)
14
- rescue
14
+ rescue java.lang.ClassNotFoundException
15
15
  require 'jdbc/sqlite3' # the JDBC driver, packaged as a gem
16
16
  end
17
17
 
@@ -1,5 +1,5 @@
1
1
  module DataObjects
2
2
  module Sqlite3
3
- VERSION = '0.10.8'
3
+ VERSION = '0.10.9'
4
4
  end
5
5
  end
@@ -55,7 +55,7 @@ begin
55
55
  ext.classpath = '../do_jdbc/lib/do_jdbc_internal.jar'
56
56
  ext.java_compiling do |gem|
57
57
  gem.add_dependency 'jdbc-sqlite3', '>=3.5.8'
58
- gem.add_dependency 'do_jdbc', '0.10.8'
58
+ gem.add_dependency 'do_jdbc', '0.10.9'
59
59
  end
60
60
  end
61
61
  rescue LoadError
metadata CHANGED
@@ -1,13 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: do_sqlite3
3
3
  version: !ruby/object:Gem::Version
4
- hash: 39
5
- prerelease:
4
+ prerelease: false
6
5
  segments:
7
6
  - 0
8
7
  - 10
9
- - 8
10
- version: 0.10.8
8
+ - 9
9
+ version: 0.10.9
11
10
  platform: ruby
12
11
  authors:
13
12
  - Dirkjan Bussink
@@ -15,33 +14,30 @@ autorequire:
15
14
  bindir: bin
16
15
  cert_chain: []
17
16
 
18
- date: 2011-03-29 00:00:00 Z
17
+ date: 2011-03-29 00:00:00 +02:00
18
+ default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: data_objects
22
22
  prerelease: false
23
23
  requirement: &id001 !ruby/object:Gem::Requirement
24
- none: false
25
24
  requirements:
26
25
  - - "="
27
26
  - !ruby/object:Gem::Version
28
- hash: 39
29
27
  segments:
30
28
  - 0
31
29
  - 10
32
- - 8
33
- version: 0.10.8
30
+ - 9
31
+ version: 0.10.9
34
32
  type: :runtime
35
33
  version_requirements: *id001
36
34
  - !ruby/object:Gem::Dependency
37
35
  name: rspec
38
36
  prerelease: false
39
37
  requirement: &id002 !ruby/object:Gem::Requirement
40
- none: false
41
38
  requirements:
42
39
  - - ~>
43
40
  - !ruby/object:Gem::Version
44
- hash: 9
45
41
  segments:
46
42
  - 2
47
43
  - 5
@@ -52,11 +48,9 @@ dependencies:
52
48
  name: rake-compiler
53
49
  prerelease: false
54
50
  requirement: &id003 !ruby/object:Gem::Requirement
55
- none: false
56
51
  requirements:
57
52
  - - ~>
58
53
  - !ruby/object:Gem::Version
59
- hash: 5
60
54
  segments:
61
55
  - 0
62
56
  - 7
@@ -114,6 +108,7 @@ files:
114
108
  - tasks/release.rake
115
109
  - tasks/retrieve.rake
116
110
  - tasks/spec.rake
111
+ has_rdoc: true
117
112
  homepage:
118
113
  licenses: []
119
114
 
@@ -123,27 +118,23 @@ rdoc_options: []
123
118
  require_paths:
124
119
  - lib
125
120
  required_ruby_version: !ruby/object:Gem::Requirement
126
- none: false
127
121
  requirements:
128
122
  - - ">="
129
123
  - !ruby/object:Gem::Version
130
- hash: 3
131
124
  segments:
132
125
  - 0
133
126
  version: "0"
134
127
  required_rubygems_version: !ruby/object:Gem::Requirement
135
- none: false
136
128
  requirements:
137
129
  - - ">="
138
130
  - !ruby/object:Gem::Version
139
- hash: 3
140
131
  segments:
141
132
  - 0
142
133
  version: "0"
143
134
  requirements: []
144
135
 
145
136
  rubyforge_project: dorb
146
- rubygems_version: 1.8.14
137
+ rubygems_version: 1.3.6
147
138
  signing_key:
148
139
  specification_version: 3
149
140
  summary: DataObjects Sqlite3 Driver