summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLamont Granquist <lamont@scriptkiddie.org>2014-01-01 10:25:57 -0600
committerLamont Granquist <lamont@scriptkiddie.org>2014-01-01 10:25:57 -0600
commit835956ca69369993388195949c03613e0759e6d1 (patch)
tree547e24c44ac85558a23fac8c292faf8cf0bb498c
parent90c4290796ff8eabe817ed1cae32af89bf7fbc7e (diff)
downloadffi-yajl-835956ca69369993388195949c03613e0759e6d1.tar.gz
disable c-extension for ruby-1.8.7
-rw-r--r--README.md13
-rw-r--r--lib/ffi_yajl.rb5
-rw-r--r--lib/ffi_yajl/ext.rb5
3 files changed, 17 insertions, 6 deletions
diff --git a/README.md b/README.md
index ed35a59..bd2211c 100644
--- a/README.md
+++ b/README.md
@@ -1,14 +1,19 @@
[![Build Status](https://travis-ci.org/lamont-granquist/ffi-yajl.png)](https://travis-ci.org/lamont-granquist/ffi-yajl) [![Code Climate](https://codeclimate.com/github/lamont-granquist/ffi-yajl.png)](https://codeclimate.com/github/lamont-granquist/ffi-yajl)
-TODO:
+## TODO
- switching from curling yajl2 sources to using git submodule
- fix rake compile blowing up on libyajl2
- block ruby 1.8.7 from using c extension (segfault)
- test both ffi and ext on platforms that support both (MRI, rbx)
-BUILD NOTES:
- - building libyajl2 requires 'apt-get install cmake' on ubuntu, but note
- that 'apt-get install libyajl2' will be better
+## BUILD NOTES
+
+- building libyajl2 requires 'apt-get install cmake' on ubuntu, but note
+ that 'apt-get install libyajl2' will be better
+
+## KNOWN BUGS
+
+- C Extension segfaults on ruby 1.8.7, so the ffi mode is forced for RUBY_VERSION < 1.9
diff --git a/lib/ffi_yajl.rb b/lib/ffi_yajl.rb
index c280826..10ebb38 100644
--- a/lib/ffi_yajl.rb
+++ b/lib/ffi_yajl.rb
@@ -1,8 +1,9 @@
if ENV['FORCE_FFI_YAJL'] == "ext"
require 'ffi_yajl/ext'
-elsif ENV['FORCE_FFI_YAJL'] == "ffi" || defined?(Yajl)
- # can't dynlink our libyajl2 c-ext and Yajl's libyajl1 c-ext into the same binary
+elsif ENV['FORCE_FFI_YAJL'] == "ffi" || defined?(Yajl) || RUBY_VERSION.to_f < 1.9
+ # - can't dynlink our libyajl2 c-ext and Yajl's libyajl1 c-ext into the same binary
+ # - c-extension segfaults on ruby 1.8.7
require 'ffi_yajl/ffi'
else
begin
diff --git a/lib/ffi_yajl/ext.rb b/lib/ffi_yajl/ext.rb
index d8dac6e..30f79bd 100644
--- a/lib/ffi_yajl/ext.rb
+++ b/lib/ffi_yajl/ext.rb
@@ -3,6 +3,11 @@ require 'rubygems'
require 'ffi_yajl/encoder'
require 'ffi_yajl/parser'
+unless RUBY_VERSION.to_f >= 1.9
+ # segfaults on ruby 1.8 and this is an exceedingly low priority to fix, use ffi instead
+ raise NotImplementedError, "The C-extension is disabled on Ruby 1.8"
+end
+
module FFI_Yajl
class Parser
require 'ffi_yajl/ext/parser'