ffi 1.13.0 → 1.15.0

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.
Files changed (111) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +75 -0
  3. data/Gemfile +1 -4
  4. data/README.md +10 -2
  5. data/Rakefile +23 -23
  6. data/ext/ffi_c/AbstractMemory.c +24 -25
  7. data/ext/ffi_c/Buffer.c +2 -7
  8. data/ext/ffi_c/Call.c +2 -8
  9. data/ext/ffi_c/ClosurePool.c +64 -11
  10. data/ext/ffi_c/ClosurePool.h +3 -1
  11. data/ext/ffi_c/DynamicLibrary.c +1 -6
  12. data/ext/ffi_c/Function.c +31 -16
  13. data/ext/ffi_c/Function.h +0 -4
  14. data/ext/ffi_c/FunctionInfo.c +2 -6
  15. data/ext/ffi_c/LastError.c +2 -6
  16. data/ext/ffi_c/MemoryPointer.c +2 -7
  17. data/ext/ffi_c/MemoryPointer.h +0 -4
  18. data/ext/ffi_c/MethodHandle.c +4 -8
  19. data/ext/ffi_c/Platform.c +2 -7
  20. data/ext/ffi_c/Pointer.c +24 -25
  21. data/ext/ffi_c/Pointer.h +0 -4
  22. data/ext/ffi_c/Struct.c +3 -6
  23. data/ext/ffi_c/StructByValue.c +2 -7
  24. data/ext/ffi_c/StructLayout.c +2 -6
  25. data/ext/ffi_c/Thread.c +0 -5
  26. data/ext/ffi_c/Thread.h +1 -6
  27. data/ext/ffi_c/Type.c +1 -1
  28. data/ext/ffi_c/Types.c +6 -7
  29. data/ext/ffi_c/Types.h +3 -4
  30. data/ext/ffi_c/Variadic.c +14 -9
  31. data/ext/ffi_c/extconf.rb +22 -10
  32. data/ext/ffi_c/libffi/.travis/bfin-sim.exp +1 -1
  33. data/ext/ffi_c/libffi/.travis/m32r-sim.exp +1 -1
  34. data/ext/ffi_c/libffi/.travis/moxie-sim.exp +1 -1
  35. data/ext/ffi_c/libffi/.travis/or1k-sim.exp +1 -1
  36. data/ext/ffi_c/libffi/.travis/powerpc-eabisim.exp +1 -1
  37. data/ext/ffi_c/libffi/.travis/wine-sim.exp +1 -1
  38. data/ext/ffi_c/libffi/Makefile.am +48 -58
  39. data/ext/ffi_c/libffi/README.md +4 -0
  40. data/ext/ffi_c/libffi/config.guess +552 -331
  41. data/ext/ffi_c/libffi/config.sub +1321 -1306
  42. data/ext/ffi_c/libffi/configure.ac +6 -1
  43. data/ext/ffi_c/libffi/configure.host +32 -20
  44. data/ext/ffi_c/libffi/doc/Makefile.am +3 -0
  45. data/ext/ffi_c/libffi/doc/libffi.texi +997 -0
  46. data/ext/ffi_c/libffi/doc/version.texi +4 -0
  47. data/ext/ffi_c/libffi/generate-darwin-source-and-headers.py +1 -1
  48. data/ext/ffi_c/libffi/msvcc.sh +11 -11
  49. data/ext/ffi_c/libffi/src/aarch64/ffi.c +45 -35
  50. data/ext/ffi_c/libffi/src/aarch64/ffitarget.h +10 -5
  51. data/ext/ffi_c/libffi/src/aarch64/internal.h +1 -0
  52. data/ext/ffi_c/libffi/src/aarch64/sysv.S +1 -1
  53. data/ext/ffi_c/libffi/src/aarch64/win64_armasm.S +1 -1
  54. data/ext/ffi_c/libffi/src/arm/ffi.c +22 -0
  55. data/ext/ffi_c/libffi/src/arm/sysv.S +4 -4
  56. data/ext/ffi_c/libffi/src/closures.c +23 -6
  57. data/ext/ffi_c/libffi/src/csky/ffi.c +395 -0
  58. data/ext/ffi_c/libffi/src/csky/ffitarget.h +63 -0
  59. data/ext/ffi_c/libffi/src/csky/sysv.S +371 -0
  60. data/ext/ffi_c/libffi/src/dlmalloc.c +1 -1
  61. data/ext/ffi_c/libffi/src/kvx/asm.h +5 -0
  62. data/ext/ffi_c/libffi/src/kvx/ffi.c +273 -0
  63. data/ext/ffi_c/libffi/src/kvx/ffitarget.h +75 -0
  64. data/ext/ffi_c/libffi/src/kvx/sysv.S +127 -0
  65. data/ext/ffi_c/libffi/src/mips/ffi.c +5 -1
  66. data/ext/ffi_c/libffi/src/mips/ffitarget.h +1 -1
  67. data/ext/ffi_c/libffi/src/powerpc/ffi_darwin.c +13 -1
  68. data/ext/ffi_c/libffi/src/powerpc/ffi_powerpc.h +1 -1
  69. data/ext/ffi_c/libffi/src/powerpc/linux64.S +8 -0
  70. data/ext/ffi_c/libffi/src/powerpc/linux64_closure.S +13 -1
  71. data/ext/ffi_c/libffi/src/prep_cif.c +1 -1
  72. data/ext/ffi_c/libffi/src/x86/ffi.c +8 -2
  73. data/ext/ffi_c/libffi/src/x86/ffi64.c +7 -0
  74. data/ext/ffi_c/libffi/src/x86/ffiw64.c +5 -0
  75. data/ext/ffi_c/libffi/src/x86/sysv.S +2 -2
  76. data/ext/ffi_c/libffi/src/x86/unix64.S +1 -2
  77. data/ext/ffi_c/libffi/src/x86/win64.S +3 -2
  78. data/ext/ffi_c/libffi/src/x86/win64_intel.S +3 -2
  79. data/ext/ffi_c/libffi/testsuite/lib/libffi.exp +22 -2
  80. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/test-call.c +4 -4
  81. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/test-callback.c +2 -2
  82. data/ext/ffi_c/libffi/testsuite/libffi.closures/huge_struct.c +2 -0
  83. data/ffi.gemspec +1 -1
  84. data/lib/ffi.rb +2 -2
  85. data/lib/ffi/abstract_memory.rb +44 -0
  86. data/lib/ffi/autopointer.rb +1 -1
  87. data/lib/ffi/ffi.rb +1 -0
  88. data/lib/ffi/io.rb +3 -3
  89. data/lib/ffi/library.rb +1 -1
  90. data/lib/ffi/managedstruct.rb +2 -2
  91. data/lib/ffi/platform.rb +20 -7
  92. data/lib/ffi/platform/aarch64-darwin/types.conf +130 -0
  93. data/lib/ffi/platform/aarch64-openbsd/types.conf +134 -0
  94. data/lib/ffi/platform/powerpc64le-linux/types.conf +100 -0
  95. data/lib/ffi/platform/riscv64-linux/types.conf +104 -0
  96. data/lib/ffi/platform/x86_64-dragonflybsd/types.conf +4 -22
  97. data/lib/ffi/platform/x86_64-haiku/types.conf +117 -0
  98. data/lib/ffi/platform/x86_64-msys/types.conf +119 -0
  99. data/lib/ffi/pointer.rb +2 -2
  100. data/lib/ffi/variadic.rb +1 -10
  101. data/lib/ffi/version.rb +1 -1
  102. data/rakelib/ffi_gem_helper.rb +65 -0
  103. metadata +18 -11
  104. data/.appveyor.yml +0 -30
  105. data/.github/workflows/ci.yml +0 -64
  106. data/.gitignore +0 -25
  107. data/.gitmodules +0 -4
  108. data/.travis.yml +0 -58
  109. data/.yardopts +0 -5
  110. data/ext/ffi_c/win32/stdbool.h +0 -8
  111. data/ext/ffi_c/win32/stdint.h +0 -201
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e96bb396dbe6fdc7c8a68b4328bb9142e50a9c934a94aa79837fb26bfb195a97
4
- data.tar.gz: efb9edb9a7e79911a1860d7ceb60b842840c2f469f248b7795c38cede57fddbe
3
+ metadata.gz: aa4ec9f3d594a52a39d6ed09a73f1b25f912306d86447e183008adfedd8ef112
4
+ data.tar.gz: b998fa031983d27bc0bfb698e8284e8bc2fa931bd72e8fc21b761828d688f49d
5
5
  SHA512:
6
- metadata.gz: c1f23d12fdea63b629ca8a09fd39b6b60aae31a5b25b54e15c8519a9b1e71bf8ca93d01c34b4a424d68fae8d9a6b22e171c45eb2e357ccdd6df9eaf7e7dd60cd
7
- data.tar.gz: 0c47701aec04d869c1c62e71b88dbf5b33fbef3e1cf49819301e94e124817783db47e8e4427f3782b44f0516009e0e2def336423d594283f1d9b870bc4941765
6
+ metadata.gz: e2352da0e9bf497be6000ebf0dc9f2714c2fa8b4a4d379d7e05d0cfcb51d002e0a83f47463f54284f561b2a7250ddb73e82ea6a13d90c1e84fe1e7277fe5993f
7
+ data.tar.gz: 750d28e73978ec4bc9f2546a66a9293b610200aec7e91165b226b6a6ba1b6c3bc409cf30841f9d21ade246c4e5c7d39d89ea5a3d858649319ea381718e4dafb8
data/CHANGELOG.md CHANGED
@@ -1,3 +1,78 @@
1
+ 1.15.0 / 2021-03-05
2
+ -------------------
3
+
4
+ Fixed:
5
+ * Fix MSVC build
6
+ * Fix async callbacks in conjunction with fork(). #884
7
+
8
+ Added:
9
+ * Allow to pass callbacks in varargs. #885
10
+ * Name the threads for FFI callback dispatcher and async thread calls for easier debugging. #883
11
+ The name can be retrieved by Thread.name and is shown by Thread.list.inspect etc.
12
+ Even gdb shows the thread name on supported operating systems.
13
+ * Add types.conf for powerpc64le-linux
14
+ * Add types.conf for riscv64-linux
15
+ * More release automation of ffi gems
16
+
17
+ Changed:
18
+ * Switch from rubygems-tasks to bundler/gem_helper
19
+
20
+ Removed:
21
+ * Remove unused VariadicInvoker#init
22
+
23
+
24
+ 1.14.2 / 2020-12-21
25
+ -------------------
26
+
27
+ Fixed:
28
+ * Fix builtin libffi on newer Ubuntu caused by an outdated Makefile.in . #863
29
+
30
+
31
+ 1.14.1 / 2020-12-19
32
+ -------------------
33
+
34
+ Changed:
35
+ * Revert changes to FFI::Pointer#write_string made in ffi-1.14.0.
36
+ It breaks compatibilty in a way that can cause hard to find errors. #857
37
+
38
+
39
+ 1.14.0 / 2020-12-18
40
+ -------------------
41
+
42
+ Added:
43
+ * Add types.conf for x86_64-msys, x86_64-haiku, aarch64-openbsd and aarch64-darwin (alias arm64-darwin)
44
+ * Add method AbstractMemory#size_limit? . #829
45
+ * Add new extconf option --enable-libffi-alloc which is enabled per default on Apple M1 (arm64-darwin).
46
+
47
+ Changed:
48
+ * Do NULL pointer check only when array length > 0 . #305
49
+ * Raise an error on an unknown order argument. #830
50
+ * Change FFI::Pointer#write_string to terminate with a NUL byte like other string methods. #805
51
+ * Update bundled libffi to latest master.
52
+
53
+ Removed:
54
+ * Remove win32/stdint.h and stdbool.h because of copyright issue. #693
55
+
56
+ Fixed:
57
+ * Fix possible UTF-8 load error in loader script interpretation. #792
58
+ * Fix segfault on non-array argument to #write_array_of_*
59
+ * Fix memory leak in MethodHandle . #815
60
+ * Fix possible segfault in combination with fiddle or other libffi using gems . #835
61
+ * Fix possibility to use ffi ruby gem with JRuby-9.3 . #763
62
+ * Fix a GC issue, when a callback Proc is used on more than 2 callback signatures. #820
63
+
64
+
65
+ 1.13.1 / 2020-06-09
66
+ -------------------
67
+
68
+ Changed:
69
+ * Revert use of `ucrtbase.dll` as default C library on Windows-MINGW.
70
+ `ucrtbase.dll` is still used on MSWIN target. #790
71
+ * Test for `ffi_prep_closure_loc()` to make sure we can use this function.
72
+ This fixes incorrect use of system libffi on MacOS Mojave (10.14). #787
73
+ * Update types.conf on x86_64-dragonflybsd
74
+
75
+
1
76
  1.13.0 / 2020-06-01
2
77
  -------------------
3
78
 
data/Gemfile CHANGED
@@ -5,10 +5,7 @@ group :development do
5
5
  gem 'rake-compiler', '~> 1.0.3'
6
6
  gem 'rake-compiler-dock', '~> 1.0'
7
7
  gem 'rspec', '~> 3.0'
8
- # irb is a dependency of rubygems-tasks 0.2.5.
9
- # irb versions > 1.1.1 depend on reline,
10
- # which sometimes causes 'bundle install' to fail on Ruby <= 2.4: https://github.com/rubygems/rubygems/issues/3463
11
- gem 'rubygems-tasks', '>= 0.2', '< 0.2.5', :require => 'rubygems/tasks'
8
+ gem 'bundler', '~> 2.0'
12
9
  end
13
10
 
14
11
  group :doc do
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # Ruby-FFI https://github.com/ffi/ffi/wiki [![Build Status](https://travis-ci.org/ffi/ffi.svg?branch=master)](https://travis-ci.org/ffi/ffi) [![Build status Windows](https://ci.appveyor.com/api/projects/status/r8wxn1sd4s794gg1/branch/master?svg=true)](https://ci.appveyor.com/project/larskanis/ffi-aofqa/branch/master)
1
+ # Ruby-FFI https://github.com/ffi/ffi/wiki [![Build Status](https://travis-ci.com/ffi/ffi.svg?branch=master)](https://travis-ci.com/ffi/ffi) [![Build status Windows](https://ci.appveyor.com/api/projects/status/r8wxn1sd4s794gg1/branch/master?svg=true)](https://ci.appveyor.com/project/larskanis/ffi-aofqa/branch/master)
2
2
 
3
3
  ## Description
4
4
 
@@ -66,10 +66,18 @@ From rubygems:
66
66
  or from the git repository on github:
67
67
 
68
68
  git clone git://github.com/ffi/ffi.git
69
- git submodule update --init --recursive
70
69
  cd ffi
70
+ git submodule update --init --recursive
71
+ bundle install
71
72
  rake install
72
73
 
74
+ ### Install options:
75
+
76
+ * `--enable-system-libffi` : Force usage of system libffi
77
+ * `--disable-system-libffi` : Force usage of builtin libffi
78
+ * `--enable-libffi-alloc` : Force closure allocation by libffi
79
+ * `--disable-libffi-alloc` : Force closure allocation by builtin method
80
+
73
81
  ## License
74
82
 
75
83
  The ffi library is covered by the BSD license, also see the LICENSE file.
data/Rakefile CHANGED
@@ -1,20 +1,17 @@
1
- require 'rubygems/tasks'
2
1
  require 'rbconfig'
3
- require 'rake/clean'
4
- require_relative "lib/ffi/version"
5
-
6
2
  require 'date'
7
3
  require 'fileutils'
8
4
  require 'rbconfig'
9
5
  require 'rspec/core/rake_task'
10
6
  require 'rubygems/package_task'
7
+ require 'rake/extensiontask'
8
+ require_relative "lib/ffi/version"
9
+ require_relative "rakelib/ffi_gem_helper"
11
10
 
12
11
  BUILD_DIR = "build"
13
12
  BUILD_EXT_DIR = File.join(BUILD_DIR, "#{RbConfig::CONFIG['arch']}", 'ffi_c', RUBY_VERSION)
14
13
 
15
- def gem_spec
16
- @gem_spec ||= Gem::Specification.load('ffi.gemspec')
17
- end
14
+ gem_spec = Bundler.load_gemspec('ffi.gemspec')
18
15
 
19
16
  RSpec::Core::RakeTask.new(:spec => :compile) do |config|
20
17
  config.rspec_opts = YAML.load_file 'spec/spec.opts'
@@ -37,6 +34,13 @@ CLEAN.include "pkg/ffi-*-{mingw32,java}"
37
34
  CLEAN.include 'lib/1.*'
38
35
  CLEAN.include 'lib/2.*'
39
36
 
37
+ # clean all shipped files, that are not in git
38
+ CLEAN.include(
39
+ gem_spec.files -
40
+ `git --git-dir ext/ffi_c/libffi/.git ls-files -z`.split("\x0").map { |f| File.join("ext/ffi_c/libffi", f) } -
41
+ `git ls-files -z`.split("\x0")
42
+ )
43
+
40
44
  task :distclean => :clobber
41
45
 
42
46
  desc "Test the extension"
@@ -80,6 +84,10 @@ end
80
84
 
81
85
  task 'gem:java' => 'java:gem'
82
86
 
87
+ FfiGemHelper.install_tasks
88
+ # Register windows gems to be pushed to rubygems.org
89
+ Bundler::GemHelper.instance.cross_platforms = %w[x86-mingw32 x64-mingw32]
90
+
83
91
  if RUBY_ENGINE == 'ruby' || RUBY_ENGINE == 'rbx'
84
92
  require 'rake/extensiontask'
85
93
  Rake::ExtensionTask.new('ffi_c', gem_spec) do |ext|
@@ -87,21 +95,11 @@ if RUBY_ENGINE == 'ruby' || RUBY_ENGINE == 'rbx'
87
95
  # ext.lib_dir = BUILD_DIR # put binaries into this folder.
88
96
  ext.tmp_dir = BUILD_DIR # temporary folder used during compilation.
89
97
  ext.cross_compile = true # enable cross compilation (requires cross compile toolchain)
90
- ext.cross_platform = %w[i386-mingw32 x64-mingw32] # forces the Windows platform instead of the default one
98
+ ext.cross_platform = Bundler::GemHelper.instance.cross_platforms
91
99
  ext.cross_compiling do |spec|
92
100
  spec.files.reject! { |path| File.fnmatch?('ext/*', path) }
93
101
  end
94
- end
95
102
 
96
- # To reduce the gem file size strip mingw32 dlls before packaging
97
- ENV['RUBY_CC_VERSION'].to_s.split(':').each do |ruby_version|
98
- task "build/i386-mingw32/stage/lib/#{ruby_version[/^\d+\.\d+/]}/ffi_c.so" do |t|
99
- sh "i686-w64-mingw32-strip -S build/i386-mingw32/stage/lib/#{ruby_version[/^\d+\.\d+/]}/ffi_c.so"
100
- end
101
-
102
- task "build/x64-mingw32/stage/lib/#{ruby_version[/^\d+\.\d+/]}/ffi_c.so" do |t|
103
- sh "x86_64-w64-mingw32-strip -S build/x64-mingw32/stage/lib/#{ruby_version[/^\d+\.\d+/]}/ffi_c.so"
104
- end
105
103
  end
106
104
  else
107
105
  task :compile do
@@ -109,6 +107,7 @@ else
109
107
  end
110
108
  end
111
109
 
110
+
112
111
  desc "build a windows gem without all the ceremony"
113
112
  task "gem:windows" do
114
113
  require "rake_compiler_dock"
@@ -125,7 +124,7 @@ task :libffi => "ext/ffi_c/libffi/autogen.sh"
125
124
 
126
125
  LIBFFI_GIT_FILES = `git --git-dir ext/ffi_c/libffi/.git ls-files -z`.split("\x0")
127
126
 
128
- # Generate files in gemspec but not in libffi's git repo by running autogen.sh
127
+ # Generate files which are in the gemspec but not in libffi's git repo by running autogen.sh
129
128
  gem_spec.files.select do |f|
130
129
  f =~ /ext\/ffi_c\/libffi\/(.*)/ && !LIBFFI_GIT_FILES.include?($1)
131
130
  end.each do |f|
@@ -141,6 +140,11 @@ end.each do |f|
141
140
  end
142
141
  end
143
142
 
143
+ # Make sure we have all gemspec files before packaging
144
+ task :build => gem_spec.files
145
+ task :gem => :build
146
+
147
+
144
148
  require_relative "lib/ffi/platform"
145
149
  types_conf = File.expand_path(File.join(FFI::Platform::CONF_DIR, 'types.conf'))
146
150
  logfile = File.join(File.dirname(__FILE__), 'types_log')
@@ -161,10 +165,6 @@ end
161
165
  desc "Create or update type information for platform #{FFI::Platform::NAME}"
162
166
  task :types_conf => types_conf
163
167
 
164
- Gem::Tasks.new do |t|
165
- t.scm.tag.format = '%s'
166
- end
167
-
168
168
  begin
169
169
  require 'yard'
170
170
 
@@ -32,12 +32,9 @@
32
32
  #include <sys/types.h>
33
33
  #ifndef _MSC_VER
34
34
  # include <sys/param.h>
35
- # include <stdint.h>
36
- # include <stdbool.h>
37
- #else
38
- # include "win32/stdbool.h"
39
- # include "win32/stdint.h"
40
35
  #endif
36
+ #include <stdint.h>
37
+ #include <stdbool.h>
41
38
 
42
39
  #include <limits.h>
43
40
  #include <ruby.h>
@@ -135,11 +132,13 @@ static VALUE memory_put_array_of_##name(VALUE self, VALUE offset, VALUE ary); \
135
132
  static VALUE \
136
133
  memory_put_array_of_##name(VALUE self, VALUE offset, VALUE ary) \
137
134
  { \
138
- long count = RARRAY_LEN(ary); \
135
+ long count; \
139
136
  long off = NUM2LONG(offset); \
140
137
  AbstractMemory* memory = MEMORY(self); \
141
138
  long i; \
142
- checkWrite(memory); \
139
+ Check_Type(ary, T_ARRAY); \
140
+ count = RARRAY_LEN(ary); \
141
+ if (likely(count > 0)) checkWrite(memory); \
143
142
  checkBounds(memory, off, count * sizeof(type)); \
144
143
  for (i = 0; i < count; i++) { \
145
144
  type tmp = (type) VAL(toNative(RARRAY_PTR(ary)[i]), swap); \
@@ -162,7 +161,7 @@ memory_get_array_of_##name(VALUE self, VALUE offset, VALUE length) \
162
161
  AbstractMemory* memory = MEMORY(self); \
163
162
  VALUE retVal = rb_ary_new2(count); \
164
163
  long i; \
165
- checkRead(memory); \
164
+ if (likely(count > 0)) checkRead(memory); \
166
165
  checkBounds(memory, off, count * sizeof(type)); \
167
166
  for (i = 0; i < count; ++i) { \
168
167
  type tmp; \
@@ -209,13 +208,13 @@ SWAPU16(uint16_t x)
209
208
  ((x >> 40) & 0x000000000000ff00ULL) | \
210
209
  ((x >> 56) & 0x00000000000000ffULL))
211
210
 
212
- static inline int32_t
211
+ static inline int32_t
213
212
  SWAPS32(int32_t x)
214
213
  {
215
214
  return bswap32(x);
216
215
  }
217
216
 
218
- static inline uint32_t
217
+ static inline uint32_t
219
218
  SWAPU32(uint32_t x)
220
219
  {
221
220
  return bswap32(x);
@@ -450,7 +449,7 @@ memory_get_array_of_string(int argc, VALUE* argv, VALUE self)
450
449
  int i;
451
450
 
452
451
  checkBounds(ptr, off, count * sizeof (char*));
453
-
452
+
454
453
  for (i = 0; i < count; ++i) {
455
454
  const char* strptr = *((const char**) (ptr->address + off) + i);
456
455
  rb_ary_push(retVal, (strptr == NULL ? Qnil : rb_str_new2(strptr)));
@@ -477,7 +476,7 @@ memory_get_array_of_string(int argc, VALUE* argv, VALUE self)
477
476
  * @param [Numeric] count number of strings to get. If nil, return all strings
478
477
  * @return [Array<String>]
479
478
  */
480
- static VALUE
479
+ static VALUE
481
480
  memory_read_array_of_string(int argc, VALUE* argv, VALUE self)
482
481
  {
483
482
  VALUE* rargv = ALLOCA_N(VALUE, argc + 1);
@@ -535,13 +534,13 @@ memory_get_bytes(VALUE self, VALUE offset, VALUE length)
535
534
  {
536
535
  AbstractMemory* ptr = MEMORY(self);
537
536
  long off, len;
538
-
537
+
539
538
  off = NUM2LONG(offset);
540
539
  len = NUM2LONG(length);
541
540
 
542
541
  checkRead(ptr);
543
542
  checkBounds(ptr, off, len);
544
-
543
+
545
544
  return rb_str_new((char *) ptr->address + off, len);
546
545
  }
547
546
 
@@ -595,7 +594,7 @@ memory_put_bytes(int argc, VALUE* argv, VALUE self)
595
594
  * equivalent to :
596
595
  * memory.get_bytes(0, length)
597
596
  */
598
- static VALUE
597
+ static VALUE
599
598
  memory_read_bytes(VALUE self, VALUE length)
600
599
  {
601
600
  return memory_get_bytes(self, INT2FIX(0), length);
@@ -610,7 +609,7 @@ memory_read_bytes(VALUE self, VALUE length)
610
609
  * equivalent to :
611
610
  * memory.put_bytes(0, str, index, length)
612
611
  */
613
- static VALUE
612
+ static VALUE
614
613
  memory_write_bytes(int argc, VALUE* argv, VALUE self)
615
614
  {
616
615
  VALUE* wargv = ALLOCA_N(VALUE, argc + 1);
@@ -643,7 +642,7 @@ memory_type_size(VALUE self)
643
642
  * Document-method: []
644
643
  * call-seq: memory[idx]
645
644
  * @param [Numeric] idx index to access in memory
646
- * @return
645
+ * @return
647
646
  * Memory read accessor.
648
647
  */
649
648
  static VALUE
@@ -748,9 +747,9 @@ MemoryOps rbffi_AbstractMemoryOps = {
748
747
  void
749
748
  rbffi_AbstractMemory_Init(VALUE moduleFFI)
750
749
  {
751
- /*
750
+ /*
752
751
  * Document-class: FFI::AbstractMemory
753
- *
752
+ *
754
753
  * {AbstractMemory} is the base class for many memory management classes such as {Buffer}.
755
754
  *
756
755
  * This class has a lot of methods to work with integers :
@@ -778,8 +777,8 @@ rbffi_AbstractMemory_Init(VALUE moduleFFI)
778
777
  */
779
778
  VALUE classMemory = rb_define_class_under(moduleFFI, "AbstractMemory", rb_cObject);
780
779
  rbffi_AbstractMemoryClass = classMemory;
781
- /*
782
- * Document-variable: FFI::AbstractMemory
780
+ /*
781
+ * Document-variable: FFI::AbstractMemory
783
782
  */
784
783
  rb_global_variable(&rbffi_AbstractMemoryClass);
785
784
  rb_define_alloc_func(classMemory, memory_allocate);
@@ -807,13 +806,13 @@ rbffi_AbstractMemory_Init(VALUE moduleFFI)
807
806
  rb_define_method(classMemory, "read_array_of_" #type, memory_read_array_of_##type, 1); \
808
807
  rb_define_method(classMemory, "write_array_of_u" #type, memory_write_array_of_u##type, 1); \
809
808
  rb_define_method(classMemory, "read_array_of_u" #type, memory_read_array_of_u##type, 1);
810
-
809
+
811
810
  INT(int8);
812
811
  INT(int16);
813
812
  INT(int32);
814
813
  INT(int64);
815
814
  INT(long);
816
-
815
+
817
816
  #define ALIAS(name, old) \
818
817
  rb_define_alias(classMemory, "put_" #name, "put_" #old); \
819
818
  rb_define_alias(classMemory, "get_" #name, "get_" #old); \
@@ -831,12 +830,12 @@ rbffi_AbstractMemory_Init(VALUE moduleFFI)
831
830
  rb_define_alias(classMemory, "read_array_of_" #name, "read_array_of_" #old); \
832
831
  rb_define_alias(classMemory, "write_array_of_u" #name, "write_array_of_u" #old); \
833
832
  rb_define_alias(classMemory, "read_array_of_u" #name, "read_array_of_u" #old);
834
-
833
+
835
834
  ALIAS(char, int8);
836
835
  ALIAS(short, int16);
837
836
  ALIAS(int, int32);
838
837
  ALIAS(long_long, int64);
839
-
838
+
840
839
  /*
841
840
  * Document-method: put_float32
842
841
  * call-seq: memory.put_float32offset, value)
data/ext/ffi_c/Buffer.c CHANGED
@@ -28,13 +28,8 @@
28
28
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29
29
  */
30
30
 
31
- #ifndef _MSC_VER
32
- # include <stdint.h>
33
- # include <stdbool.h>
34
- #else
35
- # include "win32/stdbool.h"
36
- # include "win32/stdint.h"
37
- #endif
31
+ #include <stdint.h>
32
+ #include <stdbool.h>
38
33
  #include <limits.h>
39
34
  #include <ruby.h>
40
35
  #include "rbffi.h"
data/ext/ffi_c/Call.c CHANGED
@@ -34,13 +34,8 @@
34
34
  #endif
35
35
  #include <sys/types.h>
36
36
  #include <stdio.h>
37
- #ifndef _MSC_VER
38
- # include <stdint.h>
39
- # include <stdbool.h>
40
- #else
41
- # include "win32/stdbool.h"
42
- # include "win32/stdint.h"
43
- #endif
37
+ #include <stdint.h>
38
+ #include <stdbool.h>
44
39
  #include <errno.h>
45
40
  #include <ruby.h>
46
41
  #include <ruby/thread.h>
@@ -315,7 +310,6 @@ rbffi_SetupCallParams(int argc, VALUE* argv, int paramCount, Type** paramTypes,
315
310
 
316
311
 
317
312
  case NATIVE_FUNCTION:
318
- case NATIVE_CALLBACK:
319
313
  if (callbackProc != Qnil) {
320
314
  param->ptr = callback_param(callbackProc, callbackParameters[cbidx++]);
321
315
  } else {