eventmachine/eventmachine — pull request #433 by johnsyweb (2013-04-11 11:41:52+00:00)
Title: ISO C++ forbids variable-size array ‘iov’

This pull request addresses the following.

```
[Thu 13/04/11 21:39 EST][s001][x86_64/darwin12.2.0/12.3.0][5.0.2]

zsh 212 % gem install eventmachine
Building native extensions. This could take a while...
ERROR: Error installing eventmachine:
ERROR: Failed to build gem native extension.

/Users/paj/.rbenv/versions/1.9.3-p392/bin/ruby extconf.rb
checking for rb_trap_immediate in ruby.h,rubysig.h... no
checking for rb_thread_blocking_region()... yes
checking for inotify_init() in sys/inotify.h... no
checking for __NR_inotify_init in sys/syscall.h... no
checking for writev() in sys/uio.h... yes
checking for rb_wait_for_single_fd()... yes
checking for rb_enable_interrupt()... yes
checking for rb_time_new()... yes
checking for sys/event.h... yes
checking for sys/queue.h... yes
creating Makefile

make
compiling binder.cpp
In file included from /Users/paj/.rbenv/versions/1.9.3-p392/include/ruby-1.9.1/ruby.h:32,
from em.h:24,
from project.h:150,
from binder.cpp:20:
/Users/paj/.rbenv/versions/1.9.3-p392/include/ruby-1.9.1/ruby/ruby.h:1108: warning: ‘void rb_global_variable(VALUE*)’ hides constructor for ‘struct rb_global_variable’
In file included from project.h:151,
from binder.cpp:20:
ed.h:72: warning: unused parameter ‘privkey_filename’
ed.h:72: warning: unused parameter ‘certchain_filename’
ed.h:72: warning: unused parameter ‘verify_peer’
ed.h:79: warning: unused parameter ‘value’
ed.h: In member function ‘void ConnectionDescriptor::OutboundPage::Free()’:
ed.h:218: warning: cast from type ‘const char*’ to type ‘char*’ casts away constness
ed.h: In member function ‘void DatagramDescriptor::OutboundPage::Free()’:
ed.h:295: warning: cast from type ‘const char*’ to type ‘char*’ casts away constness
ed.h: In member function ‘void PipeDescriptor::OutboundPage::Free()’:
ed.h:357: warning: cast from type ‘const char*’ to type ‘char*’ casts away constness
binder.cpp: In static member function ‘static long unsigned int Bindable_t::CreateBinding()’:
binder.cpp:35: warning: suggest a space before ‘;’ or explicit braces around empty body in ‘while’ statement
compiling cmain.cpp
In file included from /Users/paj/.rbenv/versions/1.9.3-p392/include/ruby-1.9.1/ruby.h:32,
from em.h:24,
from project.h:150,
from cmain.cpp:20:
/Users/paj/.rbenv/versions/1.9.3-p392/include/ruby-1.9.1/ruby/ruby.h:1108: warning: ‘void rb_global_variable(VALUE*)’ hides constructor for ‘struct rb_global_variable’
In file included from project.h:151,
from cmain.cpp:20:
ed.h:72: warning: unused parameter ‘privkey_filename’
ed.h:72: warning: unused parameter ‘certchain_filename’
ed.h:72: warning: unused parameter ‘verify_peer’
ed.h:79: warning: unused parameter ‘value’
ed.h: In member function ‘void ConnectionDescriptor::OutboundPage::Free()’:
ed.h:218: warning: cast from type ‘const char*’ to type ‘char*’ casts away constness
ed.h: In member function ‘void DatagramDescriptor::OutboundPage::Free()’:
ed.h:295: warning: cast from type ‘const char*’ to type ‘char*’ casts away constness
ed.h: In member function ‘void PipeDescriptor::OutboundPage::Free()’:
ed.h:357: warning: cast from type ‘const char*’ to type ‘char*’ casts away constness
cmain.cpp: At global scope:
cmain.cpp:529: warning: unused parameter ‘binding’
compiling ed.cpp
In file included from /Users/paj/.rbenv/versions/1.9.3-p392/include/ruby-1.9.1/ruby.h:32,
from em.h:24,
from project.h:150,
from ed.cpp:20:
/Users/paj/.rbenv/versions/1.9.3-p392/include/ruby-1.9.1/ruby/ruby.h:1108: warning: ‘void rb_global_variable(VALUE*)’ hides constructor for ‘struct rb_global_variable’
In file included from project.h:151,
from ed.cpp:20:
ed.h:72: warning: unused parameter ‘privkey_filename’
ed.h:72: warning: unused parameter ‘certchain_filename’
ed.h:72: warning: unused parameter ‘verify_peer’
ed.h:79: warning: unused parameter ‘value’
ed.h: In member function ‘void ConnectionDescriptor::OutboundPage::Free()’:
ed.h:218: warning: cast from type ‘const char*’ to type ‘char*’ casts away constness
ed.h: In member function ‘void DatagramDescriptor::OutboundPage::Free()’:
ed.h:295: warning: cast from type ‘const char*’ to type ‘char*’ casts away constness
ed.h: In member function ‘void PipeDescriptor::OutboundPage::Free()’:
ed.h:357: warning: cast from type ‘const char*’ to type ‘char*’ casts away constness
ed.cpp: In member function ‘void EventableDescriptor::_GenericInboundDispatch(const char*, int)’:
ed.cpp:303: warning: comparison between signed and unsigned integer expressions
ed.cpp: In member function ‘void ConnectionDescriptor::_WriteOutboundData()’:
ed.cpp:987: error: ISO C++ forbids variable-size array ‘iov’
ed.cpp: In member function ‘virtual void DatagramDescriptor::Write()’:
ed.cpp:1665: warning: cast from type ‘const char*’ to type ‘char*’ casts away constness
ed.cpp: In member function ‘int DatagramDescriptor::SendOutboundDatagram(const char*, int, const char*, int)’:
ed.cpp:1774: warning: cast from type ‘const char*’ to type ‘char*’ casts away constness
make: *** [ed.o] Error 1

Gem files will remain installed in /Users/paj/.rbenv/versions/1.9.3-p392/lib/ruby/gems/1.9.1/gems/eventmachine-1.0.3 for inspection.
Results logged to /Users/paj/.rbenv/versions/1.9.3-p392/lib/ruby/gems/1.9.1/gems/eventmachine-1.0.3/ext/gem_make.out
```

No standards-compliant compiler should have allowed this through.