do_sqlite3 0.10.8 → 0.10.9

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.
@@ -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