Граф коммитов

6326 Коммитов

Автор SHA1 Сообщение Дата
hsbt b1a658e827 * ext/pty/pty.c: fix double words typo.
[ci skip][fix GH-1157] Patch by @jwworth

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53176 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-18 00:44:52 +00:00
hsbt 7d8290811e * ext/nkf/nkf-utf8/utf8tbl.c: fix a typo.
[ci skip][fix GH-1159] Patch by @akshay-vishnoi
* ext/nkf/nkf-utf8/utf8tbl.h: ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53175 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-18 00:42:49 +00:00
nagachika 79c7a51893 * ext/fiddle/handle.c: check tainted string arguments.
Patch provided by tenderlove and nobu.

* test/fiddle/test_handle.rb (class TestHandle): add test for above.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53153 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-16 12:08:49 +00:00
naruse c4fdfabcc8 handle ext/ as r53141
g -L frozen_string_literal ext/**/*.rb|xargs ruby -Ka -e'ARGV.each{|fn|puts
fn;open(fn,"r+"){|f|s=f.read.sub(/\A(#!.*\n)?(#.*coding.*\n)?/,"\\&#
frozen_string_literal: false\n");f.rewind;f.write s}}'

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53143 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-16 05:31:54 +00:00
hsbt 79a6daa394 * ext/zlib/zlib.c: fix a typo.
[ci skip][fix GH-1149] Patch by @crismali

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53118 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-15 02:55:13 +00:00
hsbt 059c9c1cf3 * ext/socket/lib/socket.rb: use safe navigation operator.
[fix GH-1142] Patch by @mlarraz
* lib/drb/extservm.rb: ditto.
* lib/net/http.rb: ditto.
* lib/net/http/response.rb: ditto.
* lib/scanf.rb: ditto.
* lib/uri/generic.rb: ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53111 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-14 08:05:35 +00:00
nobu 4977af3c3d function.c: fix typo
* ext/fiddle/function.c (initialize): fix typo "ary" to "args",
  and adjust type of variables to suppress warnings.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53090 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-13 10:57:51 +00:00
usa de577357e8 * ext/fiddle/function.c: fix build error introduced at r53082.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53086 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-13 10:25:01 +00:00
nobu bcc2421b49 function.c: check arguments
* ext/fiddle/function.c (initialize): check all arguments first.
  reported by Marcin 'Icewall' Noga of Cisco Talos.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53082 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-13 09:35:58 +00:00
nobu 34a0df159b conversions.h: PTR2NUM
* ext/fiddle/conversions.h (PTR2NUM): use signed integer to make
  Fixnum for negative values.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53081 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-13 09:35:10 +00:00
nobu db48c30794 psych_emitter.c: check tags range
* ext/psych/psych_emitter.c (start_document): should not exceed
  tags array range.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53079 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-13 09:28:51 +00:00
nobu cc03134361 psych_emitter.c: check string
* ext/psych/psych_emitter.c (start_document): ensure string before
  encoding conversion.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53078 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-13 09:27:52 +00:00
nobu cdaa94eab4 tkutil.c: check arg
* ext/tk/tkutil/tkutil.c (tk_hash_kv): check types of array
  argument.  reported by Marcin 'Icewall' Noga of Cisco Talos.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53077 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-13 09:26:30 +00:00
nobu 62539b49a7 tkutil.c: array length
* ext/tk/tkutil/tkutil.c (cbsubst_table_setup): check length of
  argument arrays for each access, as callback methods can modify
  them.  reported by Marcin 'Icewall' Noga of Cisco Talos.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53076 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-13 09:25:15 +00:00
nobu b2d3c6a86f tkutil.c: check args
* ext/tk/tkutil/tkutil.c (cbsubst_table_setup): check types of
  argument elements.  reported by Marcin 'Icewall' Noga of Cisco
  Talos.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53075 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-13 09:23:36 +00:00
nobu 739d9a37cb win32ole.c: check argument type
* ext/win32ole/win32ole.c (ole_vstr2wc): check argument type, vstr
  must be a String here.  reported by Marcin 'Icewall' Noga of
  Cisco Talos.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53074 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-13 09:19:20 +00:00
naruse 1dd1a9873e * ext/openssl/ossl_ssl.c (ssl_npn_select_cb_common): fix parsing
protocol list.
  The protocol list from OpenSSL is not null-terminated.
  patched by Kazuki Yamaguchi [Bug #11810] [ruby-core:72082]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53064 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-13 01:29:44 +00:00
naruse 7fe3c2665e * ext/nkf/nkf-utf8/nkf.c: Merge nkf 2.1.4.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53059 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-12 14:01:56 +00:00
normal a26d09da85 NEWS: add note about Fiddle GVL release
* NEWS: note Fiddle GVL release [Feature #11607]
* ext/fiddle/function.c (Init_fiddle_function): document above, too

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53036 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-11 07:43:09 +00:00
hsbt 567eb15df3 * ext/tk/lib/multi-tk.rb: fix typos.
[Bug #11764][ruby-core:71800]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53022 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-10 05:13:39 +00:00
normal 10735e2d03 ext/socket/ifaddr.c: remove empty ifaddr_mark
We do not need to maintain empty functions for GC,
gc_mark_children will not attempt to dereference NULL
dmark callbacks.

* ext/socket/ifaddr.c (ifaddr_mark): remove empty function
  (ifaddr_type): pass zero to rb_data_type_t.function.dmark

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53016 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-09 20:07:23 +00:00
nobu 0d89c6db7e stringio.c: unused variable
* ext/stringio/stringio.c (strio_memsize): remove a variable which
  is no longer used.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52991 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-09 02:43:55 +00:00
ko1 dff42b0ea0 * ext/**/*.c (*_memsize): same as r52986 for extensions.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52988 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-09 01:01:17 +00:00
nobu 8f620b9b17 retry IO#getpass
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52948 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-08 13:26:56 +00:00
naruse 958e153cdb Revert r52902,r52903,r52910,r52911,r52937,r52939
Reject IO::Console#getpass because it can't test portablly.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52945 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-08 10:54:42 +00:00
nobu 1fadd43881 marshal.c: skip internal names
* marshal.c (w_objivar): skip internal instance variables in
  T_OBJECT too.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52940 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-08 05:20:41 +00:00
nobu 08753137de date_core.c: missing argument check
* ext/date/date_core.c (d_lite_lshift): should check the argument
  before negation.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52929 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-08 00:03:21 +00:00
normal 889f50227c socket: expand docs+tests for recv_io/send_io
* ext/socket/unixsocket.c (unix_send_io): document args
  (unix_recv_io): ditto
* test/socket/test_unix.rb (test_fd_passing_class_mode): added

I was working on these when I encountered the problem in
with BasicSocket.for_fd not handling mode args:
https://bugs.ruby-lang.org/issues/11778

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52922 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-07 18:39:47 +00:00
tenderlove a34e45fd54 * ext/psych/*: update psych to 2.0.16
* test/psych/*: ditto

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52920 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-07 16:58:10 +00:00
nobu 9a28a29b87 parse.y: indented hereoc
* parse.y: add heredoc <<~ syntax.  [Feature #9098]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52916 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-07 14:39:52 +00:00
nobu 1ad0d8ecad console.c: prompt to stderr
* ext/io/console/console.c (console_getpass): print prompt to
  stderr when reading from stdin.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52903 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-06 06:30:11 +00:00
nobu 187de9240a console.c: console_getpass
* ext/io/console/console.c (console_getpass): add IO#getpass
  method.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52902 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-06 06:25:10 +00:00
hsbt 1f1e3d1297 * ext/json/json.gemspec: bump version to json 1.8.3. CRuby already contained
upstream changes.
  4d059bf9f5
  d4c99de789
* ext/json/lib/json/version.rb: ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52899 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-05 23:40:24 +00:00
hsbt d1decf0dfe * ext/bigdecimal/bigdecimal.c: Fix double word typo.
[ci skip][fix GH-1120] Patch by @jwworth

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52846 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-02 01:36:30 +00:00
normal ebcefd795b ext/openssl/ossl_ssl.c: hide globals
* ext/openssl/ossl_ssl.c (mSSLExtConfig): make static
  (eSSLError): ditto
  (ID_callback_state): ditto
  (ossl_ssl_ex_vcb_idx): ditto
  (ossl_ssl_ex_store_p): ditto
  (ossl_ssl_ex_ptr_idx): ditto
* ext/openssl/ossl_ssl.h: remove extern declarations for
  mSSLExtConfig and eSSLError

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52842 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-01 22:49:05 +00:00
nobu 41cbb7f050 cstr.c: split bug_str_cstr_unterm
* ext/-test-/string/cstr.c (bug_str_cstr_unterm): split
  unterminating from bug_str_cstr_term.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52832 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-01 08:09:17 +00:00
kosaki 07083767e9 * ext/openssl/ossl_rand.c (ossl_rand_bytes): RAND_bytes could
be return -1 as an error. Therefore, added error handling.
* ext/openssl/ossl_pkey_dsa.c (dsa_generate): ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52810 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-30 20:29:02 +00:00
naruse 6db72c0166 * ext/readline/extconf.rb: call dir_config("libedit")
if --enable-libedit is spcified. [Bug #11751]
  patched by John Hein

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52795 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-30 09:48:24 +00:00
nobu ef44c0ad2f ripper/lexer.rb: dispatch alias
* ext/ripper/lib/ripper/lexer.rb: alias same methods instead of
  eval for each events.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52776 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-28 06:56:23 +00:00
nobu cf2b422fc5 ripper/core.rb: share handlers
* ext/ripper/lib/ripper/sexp.rb (SexpBuilderPP): share scanner
  event handlers and most of parser event handlers with
  SexpBuilder.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52775 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-28 05:43:17 +00:00
nobu f8ecb823a0 ripper/core.rb: dispatch alias
* ext/ripper/lib/ripper/core.rb: alias same methods instead of
  eval for each events.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52774 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-28 05:26:16 +00:00
naruse 360b98355e fixup! r52695
OpenSSL's SHA1 struct name is SHA_CTX (which is also used for SHA-0),
but function name is SHA1_Transform.
http://openssl.org/docs/man0.9.8/crypto/SHA1.html

also note that LibreSSL 2.3 remove the SHA-0 support but still support SHA-1.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52755 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-26 08:31:12 +00:00
nobu 13a935b0ba Drop support for BeOS
* beos: Drop support for BeOS now that Haiku is stable.
  [Fix GH-1112]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52731 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-24 00:17:11 +00:00
normal d51743afc8 ext/socket/init.c (rsock_accept): handle ENOMEM
accept(2) documents ENOMEM as a possible error, handle it
consistent with all of our other FD-allocating wrappers.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52727 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-23 22:57:29 +00:00
normal 61e5fe0674 use rb_gc_for_fd for more callers
* dir.c (dir_initialize): use rb_gc_for_fd for ENOMEM
* ext/socket/init.c (rsock_socket): ditto
* ext/socket/socket.c (rsock_socketpair): ditto
* internal.h (rb_gc_for_fd): prototype
* io.c (rb_gc_for_fd): remove static
  [ruby-core:71623] [Feature #11727]

Manpages for opendir(2), socket(2), and socketpair(3posix)
describe ENOMEM as a possible error for each of these;
handle it consistently with our existing wrappers for
open(2)/pipe(2) etc...

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52726 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-23 22:50:53 +00:00
normal 15476c695d fiddle: release GVL for ffi_call
Some external functions I wish to call may take a long time
and unnecessarily block other threads.  This may lead to performance
regressions for fast functions as releasing/acquiring the GVL is not
cheap, but can improve performance for long-running functions
in multi-threaded applications.

This also means we must reacquire the GVL when calling Ruby-defined
callbacks for Fiddle::Closure, meaning we must detect whether the
current thread has the GVL by exporting ruby_thread_has_gvl_p
in internal.h

* ext/fiddle/function.c (struct nogvl_ffi_call_args):
  new struct for GVL release
  (nogvl_ffi_call): new function
  (function_call): adjust for GVL release
  [ruby-core:71642] [Feature #11607]
* ext/fiddle/closure.c (struct callback_args):
  new struct for GVL acquire
  (with_gvl_callback): adjusted original callback function
  (callback): wrapper for conditional GVL acquire
* ext/fiddle/depend: add dependencies
* ext/fiddle/extconf.rb: include top_srcdir for internal.h
* internal.h (ruby_thread_has_gvl_p): expose for fiddle
* vm_core.h (ruby_thread_has_gvl_p): moved to internal.h
* test/fiddle/test_function.rb (test_nogvl_poll): new test

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52723 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-23 21:20:56 +00:00
nobu e29c109d2a Haiku now best effort support
* configure.in: remove obsolete workarounds for Haiku.
* dln.c, file.c, io.c: remove obsolete Haiku workarounds.
* thread_pthread.c: add stack bounds detection for Haiku.
* signal.c: get stack pointer from signal context on Haiku.
  [ruby-core:67923] [Bug #10811] [Fix GH-1109]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52721 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-23 03:54:42 +00:00
hsbt 81a6bd50c2 * ext/openssl/ossl.c: fix brew command for installation of openssl.
[ci skip][fix GH-1007] Patch by @arthurnn

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52714 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-22 10:36:56 +00:00
naruse bbc63197bd * ext/digest/sha1/extconf.rb: OpenSSL's struct name for SHA1 is
SHA_CTX. http://openssl.org/docs/man0.9.8/crypto/SHA1.html

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52695 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-21 05:01:55 +00:00
naruse 9a7c25abab * ext/digest/*/*.[ch]: include ruby.h before digest.h to avoid
includeing ext/digest/extconf.h. [Bug #3231]
  https://msdn.microsoft.com/library/36k2cdd4.aspx

* ext/digest/*/extconf.rb: remove ext/digest from include search path
  to avoid confusion of cl.exe.

* ext/digest/*/*.[ch]: explicitly specify def.h's path.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52694 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-21 04:35:57 +00:00
naruse c964c738be * ext/openssl/ossl.h: LibreSSL doesn't have and need e_os2.h.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52693 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-21 04:06:43 +00:00
hsbt 35c3f042fc * ext/socket/socket.c: remove mention of :UNIX in getaddrinfo().
It's typically not a support option.
  [ci skip][fix GH-990] Patch by @eam

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52679 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-20 03:48:10 +00:00
akr 33b832979b * ext/socket/ancdata.c: Check buffer full and ignore MSG_TRUNC flag.
buffer fullness is more robust to detect the message is too big for
  the buffer.
  AIX 7.1 recvmsg doesn't set MSG_TRUNC for rflags when MSG_PEEK is
  given.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52673 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-19 13:49:58 +00:00
usa 3006e5ea78 * ext/socket/ancdata.c (bsock_recvmsg_internal): stretch the buffer size
only when vmaxdatlen is nil.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52658 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-18 17:53:20 +00:00
usa adbf87232c * ext/extmk.rb (--extflags): new option to pass EXTLDFLAGS to children,
expecially exts.mk.

* common.mk (EXTMK_ARGS): use above option.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52653 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-18 15:55:39 +00:00
usa d8e1939232 * ext/socket/ancdata.c (bsock_recvmsg_internal): stretch the buffer size
when EMSGSIZE occurs on non HAVE_STRUCT_MSGHDR_MSG_CONTROL platforms
  (such as, Windows).  fixes a test error revealed by r52625.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52631 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-18 01:37:34 +00:00
normal ca5f5871e8 socket: fix typo for default size
* ext/socket/ancdata.c (bsock_recvmsg_internal): use 4096 as
  default size to match pre-r52610, which also maps to a common
  page size.

Oops; absolutely no idea why I made this typo...

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52630 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-18 01:18:30 +00:00
normal 508b5fdd52 socket: fix recvmsg without argument
* ext/socket/ancdata.c (bsock_recvmsg_internal): grow buffer
  on unspecified maxdatlen
  [ruby-core:71517] [Bug #11701]
* ext/socket/lib/socket.rb (Socket#recvmsg): nil default for dlen
  (Socket#recvmsg_nonblock): ditto
* test/socket/test_socket.rb (test_recvmsg_udp_no_arg): new test

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52625 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-17 22:00:23 +00:00
usa 66e2139b1a * ext/socket/lib/socket.rb (Socket#recvmsg{,_nonblock}): default values
of clen must be nil.

* ext/socket/ancdata.c (bsock_sendmsg_internal): handle nil of clen.
  fixes test errors introduced at r52602.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52610 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-17 05:06:18 +00:00
usa 4b9cd6edce * ext/socket/lib/socket.rb: UNIXSocket is not always exists. fixes
install error on Windows, introduced at r52601.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52609 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-17 04:55:36 +00:00
normal 55a692bbc2 socket: update doc for recvfrom_nonblock [ci skip]
* ext/socket/lib/socket.rb (Socket#recvfrom_nonblock):
  UDPSocket#recvfrom_nonblock):
  update doc for `exception: false` and destination buffer
  [ruby-core:69542] [Feature #11229]
  [ruby-core:69543] [Feature #11242]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52608 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-17 02:29:19 +00:00
nobu afe142997b init.c: is_socket
* ext/socket/init.c (is_socket): extract predicate to see if the
  given fd is a socket.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52605 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-17 02:15:55 +00:00
normal 8478b30267 socket: avoid exceptions in wrapper code
* ext/socket/lib/socket.rb (Socket.accept_loop): avoid exceptions
  (Socket.udp_server_recv): ditto

Exceptions for common "errors" make debug output noisy and
allocations+backtrace generation hurt performance.
[ruby-core:66385] [ruby-core:69473]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52604 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-17 01:16:25 +00:00
normal eda2441b53 socket: avoid arg parsing in bsock_sendmsg_internal
* ext/socket/ancdata.c (bsock_sendmsg_internal): avoid arg parsing
  [ruby-core:71439] [Feature #11339]
  (rsock_bsock_sendmsg): make private, adjust for above
  (rsock_bsock_sendmsg_nonblock): ditto
* ext/socket/rubysocket.h: adjust prototypes
  (rsock_opt_false_p): remove
* ext/socket/basicsocket.c (rsock_init_basicsocket):
  define private methods
* ext/socket/lib/socket.rb (BasicSocket#sendmsg): new wrapper
  (BasicSocket#sendmsg_nonblock): ditto

target 0: a (ruby 2.3.0dev (2015-11-12 trunk 52550) [x86_64-linux])
target 1: b (ruby 2.3.0dev (2015-11-12 avoid-kwarg-capi 52550) [x86_64-linux]

-----------------------------------------------------------
sendmsg_nonblock

require 'socket'
nr = 1_000_000
i = 0
msg = '.'
buf = '.'
begin
  r, w = UNIXSocket.pair(:SEQPACKET)
  while i < nr
    i += 1
    w.sendmsg_nonblock(msg, exception: false)
    r.recv(1, 0, buf)
  end
ensure
  r.close
  w.close
end

-----------------------------------------------------------
raw data:

[["sendmsg_nonblock",
  [[1.875997293740511,
    1.8452614955604076,
    1.8449317328631878,
    1.8418389447033405,
    1.869386937469244],
   [1.5175109766423702,
    1.4987873211503029,
    1.4989623799920082,
    1.47918451577425,
    1.5017359890043736]]]]

Elapsed time: 16.775453245 (sec)
-----------------------------------------------------------
benchmark results:
minimum results in each 5 measurements.
Execution time (sec)
name             a       b
sendmsg_nonblock   1.842   1.479

Speedup ratio: compare with the result of `a' (greater is better)
name             b
sendmsg_nonblock   1.245

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52603 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-17 01:05:30 +00:00
normal 416c50f574 socket (bsock_recvmsg_internal): avoid arg parsing
* ext/socket/ancdata.c (bsock_recvmsg_internal): avoid arg parsing
  (rsock_bsock_recvmsg): adjust for above change
  (rsock_bsock_recvmsg_nonblock): ditto
  [ruby-core:71439] [Feature #11339]
* ext/socket/rubysocket.h: adjust prototypes for above
* ext/socket/basicsocket.c (rsock_init_basicsocket):
  adjust private methods
* ext/socket/lib/socket.rb (BasicSocket#recvmsg): wrapper method
  (BasicSocket#recvmsg_nonblock): ditto

target 0: a (ruby 2.3.0dev (2015-11-12 trunk 52550) [x86_64-linux])
target 1: b (ruby 2.3.0dev (2015-11-12 avoid-kwarg-capi 52550) [x86_64-linux]

-----------------------------------------------------------
recvmsg_nonblock

require 'socket'
nr = 1_000_000
i = 0
msg = '.'
buf = '.'
begin
  r, w = UNIXSocket.pair(:SEQPACKET)
  while i < nr
    i += 1
    w.sendmsg(msg)
    r.recvmsg_nonblock(1, exception: false)
  end
ensure
  r.close
  w.close
end

-----------------------------------------------------------
raw data:

[["recvmsg_nonblock",
  [[3.721687912940979,
    3.6072621569037437,
    3.580637402832508,
    3.614185404032469,
    3.6029579415917397],
   [2.4694008752703667,
    2.4908322244882584,
    2.5051278844475746,
    2.5037173740565777,
    2.548359278589487]]]]

Elapsed time: 30.646087052 (sec)
-----------------------------------------------------------
benchmark results:
minimum results in each 5 measurements.
Execution time (sec)
name             a       b
recvmsg_nonblock   3.581   2.469

Speedup ratio: compare with the result of `a' (greater is better)
name             b
recvmsg_nonblock   1.450

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52602 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-17 00:58:23 +00:00
normal bee5b49aec socket: avoid arg parsing in rsock_s_accept_nonblock
* ext/socket/init.c (rsock_s_accept_nonblock): avoid parsing args
  [ruby-core:71439] [Feature #11339]
* ext/socket/rubysocket.h: adjust prototype
* ext/socket/socket.c (sock_accept_nonblock): make private
* ext/socket/tcpserver.c (tcp_accept_nonblock): ditto
* ext/socket/unixserver.c (unix_accept_nonblock): ditto
* ext/socket/lib/socket.rb (Socket#accept_nonblock):
  implement as wrapper, move RDoc
  (TCPServer#accept_nonblock): ditto
  (UNIXServer#accept_nonblock): ditto

target 0: a (ruby 2.3.0dev (2015-11-12 trunk 52550) [x86_64-linux])
target 1: b (ruby 2.3.0dev (2015-11-12 avoid-kwarg-capi 52550) [x86_64-linux]

-----------------------------------------------------------
accept_nonblock

require 'tempfile'
require 'socket'
require 'io/wait'
nr = 500000
Tempfile.create(%w(accept_nonblock .sock)) do |tmp|
  path = tmp.path
  File.unlink(path)
  s = UNIXServer.new(path)
  addr = Socket.sockaddr_un(path).freeze
  nr.times do
    s.accept_nonblock(exception: false)
    c = UNIXSocket.new(path)
    s.wait_readable
    s.accept_nonblock(exception: false).close
    c.close
  end
end

-----------------------------------------------------------
raw data:

[["accept_nonblock",
  [[4.807877402752638,
    4.930681671947241,
    4.738454818725586,
    4.69268161803484,
    4.684675686061382],
   [4.253904823213816,
    4.255124930292368,
    4.295955188572407,
    4.248479191213846,
    4.213303029537201]]]]

Elapsed time: 45.123040065 (sec)
-----------------------------------------------------------
benchmark results:
minimum results in each 5 measurements.
Execution time (sec)
name            a       b
accept_nonblock   4.685   4.213

Speedup ratio: compare with the result of `a' (greater is better)
name            b
accept_nonblock   1.112

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52601 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-16 23:40:15 +00:00
normal bb6dfab2a8 socket: Socket#connect_nonblock avoids arg parsing with C API
* ext/socket/socket.c (sock_connect_nonblock):
  avoid argument parsing in C.
  [ruby-core:71439] [Feature #11339]
* ext/socket/lib/socket.rb (Socket#connect_nonblock):
  new wrapper for private method, move RDoc

target 0: a (ruby 2.3.0dev (2015-11-12 trunk 52540) [x86_64-linux])
target 1: b (ruby 2.3.0dev (2015-11-12 avoid-kwarg-capi 52540) [x86_64-linux]

-----------------------------------------------------------
connect_nonblock

require 'tempfile'
require 'socket'
require 'io/wait'
nr = 500000
Tempfile.create(%w(connect_nonblock .sock)) do |tmp|
  path = tmp.path
  File.unlink(path)
  s = UNIXServer.new(path)
  addr = Socket.sockaddr_un(path).freeze
  nr.times do
    c = Socket.new(Socket::AF_UNIX, Socket::SOCK_STREAM)
    while c.connect_nonblock(addr, exception: false) == :wait_writable
      c.wait_writable
    end
    s.accept.close
    c.close
  end
end

-----------------------------------------------------------
raw data:

[["connect_nonblock",
  [[4.014209181070328,
    3.8479955345392227,
    3.981342639774084,
    4.471840236335993,
    3.7867715656757355],
   [3.639054525643587,
    3.58337214961648,
    3.525284394621849,
    3.52646067738533,
    3.511393066495657]]]]

Elapsed time: 37.889623996 (sec)
-----------------------------------------------------------
benchmark results:
minimum results in each 5 measurements.
Execution time (sec)
name             a       b
connect_nonblock   3.787   3.511

Speedup ratio: compare with the result of `a' (greater is better)
name             b
connect_nonblock   1.078

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52600 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-16 23:34:37 +00:00
normal 528ff1b9f9 socket: avoid arg parsing in rsock_s_recvfrom_nonblock
* ext/socket/init.c (rsock_s_recvfrom_nonblock):
  avoid arg parsing with C API
  [ruby-core:71439] [Feature #11339]
* ext/socket/basicsocket.c (bsock_recv_nonblock):
  adjust for above change, make private
* ext/socket/socket.c (sock_recvfrom_nonblock): ditto
* ext/socket/udpsocket.c (udp_recvfrom_nonblock): ditto
* ext/socket/lib/socket.rb (BasicSocket#recv_nonblock):
  new wrapper for private method, move RDoc
  (Socket#recvfrom_nonblock): ditto
  (UDPSocket#recvfrom_nonblock): ditto

Note, not adding bm_recv_nonblock.rb to benchmark/ directory
since it is non-portable.  It is only in this commit message.

Benchmark results + code
target 0: a (ruby 2.3.0dev (2015-11-12 trunk 52540) [x86_64-linux])
target 1: b (ruby 2.3.0dev (2015-11-12 avoid-kwarg-capi 52540) [x86_64-linux]

-----------------------------------------------------------
recv_nonblock

require 'socket'
nr = 1000000
msg = 'hello world'
buf = ''
size = msg.bytesize
UNIXSocket.pair(:SEQPACKET) do |a, b|
  nr.times do
    a.sendmsg(msg)
    b.recv_nonblock(size, 0, buf, exception: false)
  end
end

-----------------------------------------------------------
raw data:

[["recv_nonblock",
  [[1.83511221408844,
    1.8703329525887966,
    1.8448856547474861,
    1.859263762831688,
    1.8331583738327026],
   [1.5637447573244572,
    1.4062932096421719,
    1.4247371144592762,
    1.4108827747404575,
    1.4802536629140377]]]]

Elapsed time: 16.530452496 (sec)
-----------------------------------------------------------
benchmark results:
minimum results in each 5 measurements.
Execution time (sec)
name          a       b
recv_nonblock   1.833   1.406

Speedup ratio: compare with the result of `a' (greater is better)
name          b
recv_nonblock   1.304

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52598 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-16 23:25:03 +00:00
akr 373e87a74d * ext/socket/lib/socket.rb: Specify frozen_string_literal: true.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52576 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-14 13:15:33 +00:00
zzak 293aa87118 Commit miss from r52556
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52557 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-13 05:03:55 +00:00
zzak 85dd19cf38 * ext/openssl/ossl_pkey.c: Merge ruby/openssl@b9ea8ef [Bug #10735]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52556 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-13 05:01:15 +00:00
zzak 47135def05 * ext/openssl/ossl_ssl.c: Merge ruby/openssl@81e1a30
* test/openssl/test_ssl.rb: ditto


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52555 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-13 04:10:58 +00:00
hsbt f1f790db39 * ext/psych/psych.gemspec: bump version to 2.0.15
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52551 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-13 01:08:45 +00:00
naruse 4dedfc3cc9 Add tests for rb_time_timespec_new
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52527 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-10 17:50:38 +00:00
akr 68ebbbfebe * lib/open-uri.rb: Remove indicator for "frozen_string_literal: true".
* lib/pp.rb: Ditto.

* lib/prettyprint.rb: Ditto.

* lib/resolv.rb: Ditto.

* lib/securerandom.rb: Ditto.

* lib/tmpdir.rb: Ditto.

* lib/unicode_normalize/tables.rb: Ditto.

* test/net/ftp/test_buffered_socket.rb: Ditto.

* test/net/ftp/test_mlsx_entry.rb: Ditto.

* test/open-uri/test_open-uri.rb: Ditto.

* test/open-uri/test_ssl.rb: Ditto.

* test/pathname/test_pathname.rb: Ditto.

* test/test_pp.rb: Ditto.

* test/test_prettyprint.rb: Ditto.

* tool/transcode-tblgen.rb: Ditto.

* ext/pathname/lib/pathname.rb: Ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52526 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-10 11:48:14 +00:00
nobu a01b6453eb Rename DOTQ to ANDDOT
* defs/id.def, parse.y: Switch internal token name to reflect
  current form of safe-call operator.  [Fix GH-1090]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52525 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-10 09:42:27 +00:00
nobu 859314cbc6 bigdecimal.c: suppress warnings
* ext/bigdecimal/bigdecimal.c (AddExponent): suppress
  strict-overflow warnings.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52493 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-08 06:29:13 +00:00
nobu 6e19fc30b1 suppress warnings
* ext/date/date_parse.c (date_zone_to_diff): suppress parentheses
  warnings.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52491 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-08 05:54:29 +00:00
hsbt 3b3c323798 * ext/psych/psych_emitter.c: bakcport 5bd7744 from tenderlove/psych.
support backword compatibility of Ruby 2.0

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52487 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-08 05:01:33 +00:00
nobu 9d0012b0e7 console.c: check unused args
* ext/io/console/console.c (console_set_winsize): unused arguments
  also should be nil or integers.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52475 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-07 00:25:50 +00:00
nobu 612978edbc ext: use RARRAY_ASET
* ext/socket/socket.c (make_addrinfo): use RARRAY_ASET for
  write-barrier.
* ext/tk/tcltklib.c ({call,eval,invoke}_queue_handler): ditto.
* ext/tk/tkutil/tkutil.c (ary2list, ary2list2): ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52456 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-05 01:17:19 +00:00
nobu d2e48a3f01 tk: RARRAY_AREF
* ext/tk/tcltklib.c, ext/tk/tkutil/tkutil.c (RARRAY_AREF): add
  fallback definition.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52455 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-05 01:15:45 +00:00
nobu 57e2877e7b ext: use RARRAY_AREF
* ext/**/*.c: prefer RARRAY_AREF to indexing RARRAY_CONST_PTR.
  pointed out by hanmac.
  https://github.com/ruby/ruby/commit/3553a86#commitcomment-14187670

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52453 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-05 01:09:17 +00:00
nobu 0047ab96cd tkutil.c: rb_ary_cat
* ext/tk/tkutil/tkutil.c (rb_ary_cat): fallback definition.
  rb_ary_cat() is available since 2.0.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52450 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-04 07:50:34 +00:00
nobu 8df1863dcb tkutil.c: strndup
* ext/tk/tkutil/tkutil.c (strndup): fallback definition.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52449 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-04 07:50:19 +00:00
nobu 3553a86eb5 ext: use RARRAY_CONST_PTR
* ext/bigdecimal/bigdecimal.c: use RARRAY_CONST_PTR just fore
  reference instead of RARRAY_PTR, to keep the array WB-protected.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52448 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-04 07:27:10 +00:00
nobu 52912db4a8 ext: adjust index type
* ext: use long for index instead of int and RARRAY_LENINT.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52447 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-04 07:18:01 +00:00
nobu 1a2a4084d9 tcltklib.c: basename
* ext/tk/tcltklib.c (setup_rubytkkit): use ruby_enc_find_basename
  if available, instead of File.basename.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52417 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-10-31 23:39:37 +00:00
nobu 9b18348293 tcltklib.c: GC guard
* ext/tk/tcltklib.c (setup_rubytkkit): add GC guard instead of
  volatile.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52401 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-10-31 01:25:32 +00:00
nobu 1a98528cb7 symbol.c: dotq in ripper
* symbol.c (op_tbl): add DOTQ for ripper.  [Feature #11537]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52276 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-10-25 01:12:07 +00:00
nobu 898fd2ed2a use rb_check_arity [ci skip]
* ext: use rb_check_arity and rb_error_arity to raise
  ArgumentError.  [Feature #9025]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52275 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-10-25 00:43:06 +00:00
hsbt 5d5315ad3b * configure.in: fixed build failure of Haiku.
[fix GH-984] Patch by @kallisti5
* ext/socket/getaddrinfo.c: ditto.
* ext/socket/getnameinfo.c: ditto.
* ext/socket/rubysocket.h: ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52270 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-10-24 13:51:25 +00:00
naruse b5f2b5e1a2 ALPN also uses the same logic [Bug #11369]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52228 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-10-22 16:54:05 +00:00
naruse d7d779b594 * ext/openssl/ossl_ssl.c (ssl_npn_select_cb): explicitly raise error
in ext/openssl instead of OpenSSL itself because LibreSSL
  silently truncate the selected protocol name by casting the length
  from int to unsigned char. [Bug #11369]
  Patch by Jeremy Evans <merch-redmine@jeremyevans.net>

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52227 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-10-22 16:54:01 +00:00
nobu 29a1905c7d common.mk: showflags only once
* common.mk (showflags): do not show flags from recursive make.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52221 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-10-22 14:56:37 +00:00
nobu de2d45100d extconf.rb: strict_warnflags
* ext/date/extconf.rb: add strict warning flags same as ruby
  itself for C99 option.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52205 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-10-21 00:35:50 +00:00
normal cfa2f95476 ext/fiddle/closure.c (callback): static function
The `callback' function is not used outside of closure.c and
should not be able to cause namespace conflicts in compilers
without visibility pragmas.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52198 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-10-19 20:56:08 +00:00
nobu 603cdc2710 check INFINITY and NAN without C99 option
* configure.in: check INFINITY and NAN without an option for C99
  so that rb_infinity and rb_nan are respectively available
  regardless that option if they may be used.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52197 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-10-19 16:29:31 +00:00
nobu 9949407fd9 suppress a warning
* ext/socket/raddrinfo.c (rsock_fd_family): suppress a
  sign-compare warning.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52196 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-10-19 16:28:56 +00:00
nobu c92322b537 objspace_dump.c: special const
* ext/objspace/objspace_dump.c: support special constant objects.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52191 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-10-19 06:25:01 +00:00
nobu 7594a99322 init.c: glibc bug
* ext/socket/init.c (rsock_raise_socket_error): get rid of a glibc
  bug.  [ruby-core:71100] [Bug #11600]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52190 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-10-19 01:33:49 +00:00
kosaki 3a48e12607 * numeric.c: Good-by Borland-C.
* include/ruby/backward/rubyio.h: ditto.
* include/ruby/backward/st.h: ditto.
* include/ruby/backward/util.h: ditto.
* include/ruby/backward/rubysig.h: ditto.
* include/ruby/backward/classext.h: ditto.
* dln.c: ditto.
* gc.c: ditto.
* win32/resource.rb: ditto.
* win32/dir.h: ditto.
* ext/tk/tcltklib.c: ditto.
* NEWS: announce that Borland-C is no longer supported.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52168 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-10-18 02:10:34 +00:00
kosaki e91baf5634 * dln.c: simplify #ifdef. _WIN32 and __CYGWIN__ are exclusive.
see include/ruby/defines.h
* gc.c: ditto.
* ext/sdbm/_sdbm.c: ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52167 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-10-18 02:08:56 +00:00
kosaki 4ad2057f27 * ChangeLog: Good-bye OS/2.
* common.mk: ditto.
* configure.in: ditto.
* dln_find.c: ditto.
* ext/Setup.emx: ditto.
* ext/extmk.rb: ditto.
* ext/socket/extconf.rb: ditto.
* ext/zlib/extconf.rb: ditto.
* file.c: ditto.
* include/ruby/defines.h: ditto.
* io.c: ditto.
* lib/mkmf.rb: ditto.
* missing/os2.c: ditto.
* process.c: ditto.
* ruby.c: ditto.
* NEWS: announce OS/2 is no longer supported.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52161 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-10-18 01:18:34 +00:00
akr e794fa5cb5 * ext/socket/raddrinfo.c (rsock_fd_family): Check sa_len.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52119 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-10-13 13:49:58 +00:00
nobu 61053459cf rsock_addrinfo: specify address family
* ext/socket/rsock_addrinfo (rsock_addrinfo): specify address
  family.  [Fix GH-1052]
* ext/socket/udpsocket.c (udp_connect, udp_bind, udp_send):
  address family by the receiver.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52117 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-10-13 03:14:13 +00:00
nobu 324d7c8995 udpsocket.c: free addrinfo
* ext/socket/udpsocket.c (udp_send): ensure addrinfo gets freed.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52112 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-10-12 00:11:54 +00:00
nobu 3cf04aceec udpsocket.c: check once first
* ext/socket/udpsocket.c (udp_connect, udp_bind): check if the
  socket is opened once before retreiving address infos.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52111 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-10-12 00:11:37 +00:00
nobu d9ac64fdc7 udpsocket.c: refix r52097
* ext/socket/udpsocket.c (udp_connect, udp_bind): get open files
  inside ensure functions.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52101 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-10-10 10:04:44 +00:00
nobu 38e6235235 udpsocket.c: memory leaks
* ext/socket/udpsocket.c (udp_connect, udp_bind, udp_send): fix
  memory leaks at closed socket.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52097 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-10-09 23:52:23 +00:00
sorah e2d79c46c8 * ext/openssl/lib/openssl/ssl.rb: Revert r52082 because it was
dropping TLS v1.1 support too. Supporting only TLS v1.2 is too
  early, because many popular websites still don't support it.

  For instance, Servers where aws-sdk connects to still don't support
  TLS v1.2 and it became broken.

  We should consider more carefully about this.

  [Fix GH-873] [Feature #11524]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52089 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-10-09 05:20:50 +00:00
zzak 4b395bb4ce * ext/openssl/lib/openssl/ssl.rb: Default to TLSv1.2 and drop TLS v1
Patch provided by @claudijd [Fixes GH-873] [Feature #11524]:
  https://github.com/ruby/ruby/pull/873


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52082 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-10-08 05:26:44 +00:00
akr 36ca18b847 Put an line before "frozen_string_literal: true" for emacs.
https://bugs.ruby-lang.org/issues/8976#note-49


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52052 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-10-05 22:22:56 +00:00
akr 7ab70c3548 * ext/pathname/lib/pathname.rb: freeze string literals for
reduced object allocation.
  patch by schneems.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52023 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-10-04 13:05:32 +00:00
nobu dca6009c3e tkutil.c: use local variables
* ext/tk/tkutil/tkutil.c (cbsubst_table_setup): use local
  variables instead of repeating RARRAY_PTR.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51957 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-09-27 09:57:58 +00:00
nobu 460152ea73 parser.c: update
* ext/json/parser/parser.c: update to r51946.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51937 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-09-25 08:08:58 +00:00
nobu f12fccbec5 parser.rl: rb_scan_args
* ext/json/parser/parser.rl (cParser_initialize): use ':' in
  rb_scan_args.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51936 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-09-25 08:06:57 +00:00
nobu c97a6987b6 ext/tk: remove $SAFE 2..4 code
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51925 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-09-24 01:37:14 +00:00
nobu 61847a8279 ext/Setup: update
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51924 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-09-24 01:29:10 +00:00
zzak b885cec842 * ext/openssl/ossl_pkcs12*: Remove svn commit id macro
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51920 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-09-23 13:23:02 +00:00
zzak 0ecc3688ed * ext/openssl/*: Remove svn commit id macros to make sync easier
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51918 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-09-22 16:12:15 +00:00
nobu 4dcdbb4afc win32ole.c: fix symbol condition
* ext/win32ole/win32ole.c (fole_missing): fix symbol condition,
  rb_check_symbol returns Qnil when the symbol is not interned.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51915 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-09-21 15:46:44 +00:00
nobu 5563173afb win32ole.c: inadvertent symbol creation
* ext/win32ole/win32ole.c (GetIDsOfNames, fole_missing): avoid
  inadvertent symbol creation.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51913 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-09-21 15:29:20 +00:00
nobu 288fa8da63 win32ole.c: refactor
* ext/win32ole/win32ole.c (ole_wc2mb): refactor.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51912 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-09-21 14:52:26 +00:00
nobu 068394a7d6 win32ole.c: make ole_mb2wc more generic
* ext/win32ole/win32ole.c (ole_vstr2wc): use ole_mb2wc.

* ext/win32ole/win32ole.c (ole_mb2wc): parametrize code page.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51911 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-09-21 14:40:57 +00:00
nobu 5deaacb0f1 win32ole.c: constified
* ext/win32ole/win32ole.c (vtEventSink): constified.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51910 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-09-21 14:35:33 +00:00
tenderlove 3b90363f76 * ext/objspace/objspace_dump.c (obj_type): add IMEMO types to the heap
dump information.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51892 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-09-17 22:40:24 +00:00
nobu 50226fb61c mkmf.rb: move r40537
* lib/mkmf.rb (create_makefile): move r40537 from extmk.rb.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51756 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-09-04 03:54:23 +00:00
hsbt 4a14d94418 * ext/psych/*: merge psych master(8737e5b). It contains following fixes.
https://github.com/tenderlove/psych/pull/242
  https://github.com/tenderlove/psych/pull/246 [ruby-list:50219]
* test/psych/*: ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51741 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-09-02 09:50:00 +00:00
nobu 71f2c19a9c win32_vk.inc: merge win32_vk.h
* ext/io/console/win32_vk.inc: merge win32_vk.h not to be included
  in HDRS on other platforms than Windows.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51736 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-09-02 03:57:23 +00:00
tenderlove 801e1fe46d * ext/openssl/ossl_ssl.c (static const struct): Only add SSLv3 support
if the SSL library supports it.  Thanks Kurt Roeckx <kurt@roeckx.be>
  [Bug #11376]

* ext/openssl/extconf.rb: check for SSLv3 support in the SSL
  implementation.

* test/openssl/test_ssl.rb (class OpenSSL): Skip tests that need SSLv3
  if there is no support.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51722 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-08-29 17:45:14 +00:00
ko1 0de5e1cb87 * ext/thread/thread.c: move definitions of Queue, SizedQueue
and ConditionalVariables to thread_tools.c. In other wowrds,
  such classes are built-in.
  [Feature #8919]
  At first, I planned to embed only a Queue class.
  However, rubygems requires 'thread.rb' (rubygems are
  required at first, when launch MRI without --disable-gems).
  So most of people require 'thread.rb' as an embedded library.
  Now, ext/thread/thread.c is empty, only for a dummy for
  compatibility.
* thread.c: move a definition of Mutex class to thread_tools.c.
  And define Mutex class under Thread (so now Mutex is Thread::Mutex).
  Because other thread related classes are also defined under Thread.
  We remain ::Mutex as Thread::Mutex. Only an inspect result is changed.
* common.mk: add dependency from thread.o to thraed_tools.c.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51660 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-08-21 23:36:23 +00:00
tenderlove 226c6a1bdc * ext/psych/*: update to Psych 2.0.14
* test/psych/*: ditto

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51657 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-08-21 17:55:23 +00:00
ko1 885d781abc * ext/objspace/objspace.c: add a new method ObjectSpace.count_symbols.
[Feature #11158]
* symbol.c (rb_sym_immortal_count): added to count immortal symbols.
* symbol.h: ditto.
* test/objspace/test_objspace.rb: add a test for this method.
* NEWS: describe about this method.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51654 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-08-21 11:30:24 +00:00
tenderlove 036fe23b26 * ext/openssl/lib/openssl/ssl.rb (module OpenSSL): add OP_ALL to
existing options rather than just setting it.  Some vendors apply
  custom patches to their versions of OpenSSL that set default values
  for options.  This commit respects the custom patches they've
  applied.

* test/openssl/test_ssl.rb (class OpenSSL): check that OP_ALL has been
  added to the options.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51642 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-08-19 14:59:58 +00:00
nobu 13f33b22e1 ossl_ssl.c: check SSL method name
* ext/openssl/ossl_ssl.c (ossl_sslctx_set_ssl_version): SSL method
  name must not contain NUL.  preserve the encoding of message.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51588 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-08-15 04:34:29 +00:00
nobu b5a5cd605b use rb_sym2str
* ext/openssl/ossl_ssl.c (ossl_sslctx_set_ssl_version): use
  rb_sym2str to get rid of inadvertent ID creations.

* ext/socket/ancdata.c (ancillary_inspect): ditto.

* ext/socket/option.c (sockopt_inspect): ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51586 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-08-15 04:32:15 +00:00
nobu c5196e249e win32/registry.rb: size in bytes
* ext/win32/lib/win32/registry.rb (API#SetValue): data size should
  be in bytes, not in chars.  [ruby-core:70365] [Bug #11439]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51584 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-08-15 01:51:10 +00:00
nobu 51336edaae win32/registry.rb: terminator size
* ext/win32/lib/win32/registry.rb (API#SetValue): add terminator
  size, not 1 byte.  [ruby-core:70365] [Bug #11439]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51575 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-08-14 09:42:13 +00:00
nobu cac0f9bedc win32/registry.rb: make @@type2name an array
* ext/win32/lib/win32/registry.rb (@@type2name): make an array
  instead of a hash, keys are sequential numbers.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51574 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-08-14 09:40:31 +00:00
nobu b96499f094 objspace.c: use rb_ident_hash_new
* ext/objspace/objspace.c (reachable_objects_from_root): use
  rb_ident_hash_new instead of funcall Hash#compare_by_id.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51515 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-08-10 01:08:02 +00:00
tenderlove ff7eb4c656 * ext/openssl/lib/openssl/ssl.rb (module OpenSSL): move
SSLSocket#sysclose to Ruby.

* ext/openssl/ossl_ssl.c (ossl_ssl_close): ditto

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51497 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-08-05 23:17:33 +00:00
tenderlove 175862843c * ext/openssl/lib/openssl/ssl.rb (module OpenSSL): move nonblock
enable to SSLSocket#initialize and remove Nonblock module.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51496 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-08-05 22:59:00 +00:00
tenderlove b830786f2d * ext/openssl/lib/openssl/ssl.rb (module OpenSSL): move
OpenSSL::SSL::SSLSocket#initialize to Ruby.

* ext/openssl/ossl_ssl.c: ditto

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51495 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-08-05 22:55:38 +00:00
nobu 7918dc352f socket.c: suppress warnings
* ext/socket/socket.c (socket_s_ip_address_list): suppress
  warnings to assign pointers to literal strings.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51491 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-08-05 06:32:04 +00:00
nobu 4b19322384 ossl_ssl.c: remove unused variables
* ext/openssl/ossl_ssl.c (ossl_call_client_cert_cb),
  (ossl_call_tmp_dh_callback, ossl_call_tmp_ecdh_callback),
  (ossl_call_session_get_cb, ossl_call_session_new_cb): remove no
  longer used variables.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51487 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-08-05 01:48:10 +00:00
tenderlove 1cb9949fad * ext/openssl/lib/openssl/ssl.rb (module OpenSSL): extract callback
lookup to private Ruby methods. This means we can keep the default
  DH callback logic hidden from consumers.  Also, since the SSLSocket
  always has a context, we can remove conditionals about that
  instance.

* ext/openssl/ossl_ssl.c: move callback lookup methods to private Ruby
  methods.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51486 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-08-04 23:56:44 +00:00
nobu a2b8925a94 tcltklib.c: check argument
* ext/tk/tcltklib.c (ip_cancel_eval_core): check argument type and
  length.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51468 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-08-02 01:27:31 +00:00
normal 1e5a40ff18 openssl/buffering: fix gets on EOF with limit
* ext/openssl/lib/openssl/buffering.rb (gets):
  avoid comparing fixnum with nil
* test/openssl/test_pair.rb: test gets with limit when EOF is hit
  Thanks to Bar Hofesh <bar.hofesh@safe-t.com> for the bug report
  and testing.
  [ruby-core:70149] [Bug #11400]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51466 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-08-01 22:08:17 +00:00
tenderlove d8225d9f04 * ext/openssl/ossl_ssl.c (ossl_sslctx_setup): Implement
SSLContext#options and options= using SSL_CTX_set_options and
  SSL_CTX_get_options. This reduces the number of ivars we need and
  simplifies `ossl_sslctx_setup`.

* ext/openssl/lib/openssl/ssl.rb (module OpenSSL): Default `options`
  to SSL_OP_ALL

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51462 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-08-01 00:12:46 +00:00
tenderlove bcc2641ed8 * ext/openssl/ossl_ssl.c (Init_ossl_ssl): OpenSSL declares these
constants as longs, so we should follow that and use LONG2NUM.
  http://git.io/vOqxD

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51461 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-07-31 22:01:49 +00:00
tenderlove 9fefa60637 * ext/openssl/ossl_ssl.c (ossl_call_tmp_dh_callback): change callback
to return the Ruby dh (or ecdh) object that the caller cares about
  instead of doing rb_iv_get / set to communicate.  This means we can
  remove an rb_iv_get call, and only use the set calls for their
  intended purpose (to prevent the object from being GC'd).

* ext/openssl/ossl_ssl.c (ossl_tmp_dh_callback): ditto
* ext/openssl/ossl_ssl.c (ossl_call_tmp_ecdh_callback): ditto
* ext/openssl/ossl_ssl.c (ossl_tmp_ecdh_callback): ditto

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51460 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-07-31 19:08:40 +00:00
tenderlove 2abc873732 * ext/openssl/ossl_ssl.c (ossl_call_tmp_dh_callback): Similarly to the
tmp_ecdh_callback, the SSLSocket instance always holds a reference
  to the SSLContext object (it's always set in `initialize`).  The
  SSLContext holds a reference to the tmp_dh_callback.  Ask the
  context for the callback instead of storing the callback in two
  places.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51459 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-07-31 18:51:30 +00:00
tenderlove 568ba1cfdb * ext/openssl/ossl_ssl.c (ossl_call_tmp_dh_callback): create an array
and use `rb_apply` to clean up calls to `rb_protect`.

* ext/openssl/ossl_ssl.c (ossl_tmp_dh_callback): ditto

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51458 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-07-31 18:44:12 +00:00
tenderlove cbb45e2f4e * ext/openssl/ossl_ssl.c (ossl_call_tmp_ecdh_callback): The SSL socket
always holds a reference to the SSLContext object, which will have
  the callback object.  Ask the context for the callback instead of
  storing the callback in two places.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51457 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-07-31 18:29:12 +00:00
tenderlove 5b5d79c88b * ext/openssl/lib/openssl/ssl.rb (module OpenSSL): convert
`tmp_dh_callback` to Ruby, and call it when setting up an SSL
  connection.  This allows us to move the "default" behavior to the
  reader method.

* ext/openssl/ossl_ssl.c: call the tmp_dh_callback instead of
  accessing the SSLContext's internals.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51455 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-07-31 18:20:31 +00:00
nobu 07900180ec fiddle: $LOCAL_LIBS needs to be expanded
* ext/fiddle/extconf.rb: revert part of r51401 and expand
  $LOCAL_LIBS as it will be extracted and copied to exts.mk.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51429 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-07-29 07:53:12 +00:00
tenderlove dc9ca079bb * ext/openssl/lib/openssl/ssl.rb (module OpenSSL): raise a more
helpful exception when verifying the peer connection and an
  anonymous cipher has been selected. [ruby-core:68330] [Bug #10910]
  Thanks to Chris Sinjakli <chris@sinjakli.co.uk> for the patch.

* test/openssl/test_ssl.rb (class OpenSSL): test for change

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51409 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-07-27 18:29:17 +00:00
nobu 7d8ac59131 fiddle: clean dot dir
* ext/fiddle/depend (distclean-libffi): clean dot directory too.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51402 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-07-27 03:46:07 +00:00
nobu 50a585ed25 fiddle: unexpand LIBFFI_DIR
* ext/fiddle/extconf.rb: use LIBFFI_DIR instead of expanding it.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51401 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-07-27 03:45:11 +00:00
nobu 0f6b7c4c3b io/console/extconf.rb: fix typo
* ext/io/console/extconf.rb: fix typo, $nmake is "m" for MS, not
  "n".  check sys/ioctl.h iff necessary for tty.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51395 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-07-27 02:21:13 +00:00
nobu edf712bfd8 ossl_ssl.c: fix condition
* ext/openssl/ossl_ssl.c (ossl_ssl_alpn_protocol): fix condition
  to compile, needs ALPN to be available.  [Feature #9390]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51392 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-07-26 10:21:35 +00:00
tenderlove 86ff702957 * ext/openssl/ossl_ssl.c (ossl_call_servername_cb): set the ssl context
object returned by the servername callback on to the socket as an
  instance variable.  If the callback allocated a new context object
  and didn't keep a reference to it, it could be GC'd out from under
  the socket object.

* test/openssl/test_ssl.rb (class OpenSSL): test for change.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51387 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-07-26 01:29:02 +00:00
tenderlove b380c987e1 * ext/openssl/lib/openssl/pkey.rb: implement DEFAULT_512 and
DEFAULT_1024 constants in Ruby.

* ext/openssl/lib/openssl/ssl.rb (module OpenSSL): Ask PKey for the
  default DH callback since it aleady must check whether openssl has
  been compiled with DH support.

* ext/openssl/ossl_pkey_dh.c (OSSL_PKEY_BN): Remove C definitions of
  DEFAULT_512 and DEFAULT_1024

* ext/openssl/ossl_pkey_dh.c (Init_ossl_dh): ditto

* test/openssl/test_pkey_dh.rb (class OpenSSL): add test to ensure the
  Ruby definitions are the same as the C definitions were.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51382 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-07-25 23:35:49 +00:00
tenderlove 486e6e02c2 * ext/openssl/lib/openssl/ssl.rb (module OpenSSL): support
specifically setting the tmp_dh_callback to nil.

* ext/openssl/ossl_ssl.c (Init_ossl_ssl): ditto

* test/openssl/test_pair.rb (module OpenSSL): add a test

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51381 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-07-25 23:16:49 +00:00
tenderlove d9fcc9ba5e * ext/openssl/lib/openssl/ssl.rb (module OpenSSL): move the default
tmp_dh_callback Ruby code and set it as a default in `initialize`.

* ext/openssl/ossl_pkey_dh.c (static unsigned char DEFAULT_DH_512_GEN):
  move this constant to Ruby.

* ext/openssl/ossl_pkey_dh.c (static unsigned char DEFAULT_DH_1024_GEN):
  ditto

* ext/openssl/ossl_pkey_dh.c (Init_ossl_dh): ditto

* ext/openssl/ossl_ssl.c (ossl_tmp_dh_callback): ditto

* ext/openssl/ossl_ssl.c (ossl_sslctx_setup): tmp_dh_callback should
  always be set, so we can remove this conditional

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51380 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-07-25 22:51:20 +00:00
tenderlove dec31ef3eb * ext/openssl/lib/openssl/ssl.rb (module OpenSSL): add missing
instance variables to squash warnings with alpn.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51378 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-07-25 19:53:16 +00:00
tenderlove c8884ebfe4 * ext/openssl/lib/openssl/ssl.rb (module OpenSSL): move
OpenSSL::SSL::SSLContext#initialize implementation to pure Ruby.

* ext/openssl/ossl_ssl.c (ossl_sslctx_initialize): ditto

* ext/openssl/ossl_ssl.c (Init_ossl_ssl): ditto

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51375 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-07-25 18:44:54 +00:00
nobu 4ab69ebbd7 string.c: pool only bare strings in fstring
* string.c (fstr_update_callback): pool bare strings only.
* string.c (rb_fstring): return the original string with sharing a
  fstring if it has extra attributes, not the fstring itself.
  [ruby-dev:49188] [Bug #11386]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51360 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-07-24 07:38:37 +00:00
nobu 7c413b5545 ossl_ssl.c: suppress warnings
* ext/openssl/ossl_ssl.c (ossl_sslctx_setup): fix argument types
  to suppress shorten-64-to-32 and shorten-64-to-32 warnings.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51351 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-07-23 00:10:40 +00:00
tenderlove 28e866d7bb fix tests bu not setting the string instance on the frozen object
OpenSSL [copies the string returned by the pointe](9f040d6dec/ssl/t1_lib.c (L1800-1809)), so it should be safe to just return a pointer to the string object and not set an instance variable on the already frozen object.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51349 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-07-22 19:04:58 +00:00
tenderlove 5326593a8b * ext/openssl/ossl_ssl.c: add ECDH callback support. [Feature #11356]
* test/openssl/test_pair.rb: test for ECDH callback support

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51348 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-07-22 18:34:45 +00:00
tenderlove bc6e55c084 * ext/openssl/ossl_ssl.c: add ALPN support. [Feature #9390]
* ext/openssl/extconf.rb: detect ALPN support in OpenSSL

* test/openssl/test_ssl.rb: test for ALPN

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51347 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-07-22 18:31:42 +00:00
ko1 e4198a73d4 * make rb_iseq_t T_IMEMO object (type is imemo_iseq).
All contents of previous rb_iseq_t is in rb_iseq_t::body.
  Remove rb_iseq_t::self because rb_iseq_t is an object.
  RubyVM::InstructionSequence is wrapper object points T_IMEMO/iseq.
  So RubyVM::ISeq.of(something) method returns different wrapper
  objects but they point the same T_IMEMO/iseq object.
  This patch is big, but most of difference is replacement of
  iseq->xxx to iseq->body->xxx.
  (previous) rb_iseq_t::compile_data is also located to
  rb_iseq_t::compile_data.
  It was moved from rb_iseq_body::compile_data.
  Now rb_iseq_t has empty two pointers.
  I will split rb_iseq_body data into static data and dynamic data.
* compile.c: rename some functions/macros.
  Now, we don't need to separate iseq and iseqval (only VALUE).
* eval.c (ruby_exec_internal): `n' is rb_iseq_t (T_IMEMO/iseq).
* ext/objspace/objspace.c (count_imemo_objects): count T_IMEMO/iseq.
* gc.c: check T_IMEMO/iseq.
* internal.h: add imemo_type::imemo_iseq.
* iseq.c: define RubyVM::InstructionSequnce as T_OBJECT.
  Methods are implemented by functions named iseqw_....
* load.c (rb_load_internal0): rb_iseq_new_top() returns
  rb_iseq_t (T_IMEMO/iesq).
* method.h (rb_add_method_iseq): accept rb_iseq_t (T_IMEMO/iseq).
* vm_core.h (GetISeqPtr): removed because it is not T_DATA now.
* vm_core.h (struct rb_iseq_body): remove padding for
  [Bug #10037][ruby-core:63721].



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51327 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-07-21 22:52:59 +00:00
ko1 6053426a66 * ext/objspace/objspace.c (total_i): no need to skip singleton classes.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51326 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-07-21 22:19:48 +00:00
nobu 09389b47d2 console.c: undefined vk
* ext/io/console/console.c (console_key_pressed_p): raise
  undefined virtual key code.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51316 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-07-21 10:52:19 +00:00
nobu 6f869a57fe ruby/win32.h: include windows.h
* include/ruby/win32.h: include windows.h before winsock2.h,
  because mswsock.h included by the former uses SOCKET defined
  after it in the latter.  fix a build failure with VC6.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51312 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-07-21 10:51:14 +00:00
nobu 28c389c676 pty.c: fix example typo [ci skip]
* ext/pty/pty.c: [DOC] fix example typo, an old name at move from
  PTY.open.  [Fix GH-972]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51297 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-07-19 05:29:21 +00:00
nobu 28c42b4c25 encoding.c: drop dummy encoding flag
* encoding.c (enc_autoload): drop dummy encoding flag from
  the loaded encoding index.  this flag is used only in this
  source.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51251 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-07-15 07:55:08 +00:00
nobu daf7b1e479 -test-/string: move
* ext/-test-/string/extconf.rb: move "-test-/string/string.so" to
  "-test-/string.so".

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51249 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-07-15 03:56:17 +00:00
zzak 385c0f1028 * ext/openssl/ossl.c: [DOC] Backport ruby/openssl@dbb3fdb [Bug #11345]
Thanks to Tomoya Chiba for the report and help with patch.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51222 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-07-12 16:41:32 +00:00
sorah 3876d75585 * ext/socket/basicsocket.c: [DOC] typo (Errno::AGAIN -> Errno::EAGAIN)
* ext/socket/socket.c: ditto

* ext/socket/tcpserver.c: ditto

* ext/socket/udpsocket.c: ditto

* ext/socket/unixserver.c: ditto

* io.c: ditto

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51221 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-07-12 00:21:32 +00:00
nobu 8c0b261d48 stringio.c: Fix an example doc [ci skip]
* ext/stringio/stringio.c (Init_stringio): [DOC] Fix an example,
  StringIO#puts should be set "\n" at last.  [Fix GH-965]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51218 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-07-11 12:16:37 +00:00
nobu 498b6f4776 zlib.c: GC guards
* ext/zlib/zlib.c: prevent from GC.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51212 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-07-10 12:50:26 +00:00
nobu 41bd073de2 zlib.c: protoize
* ext/zlib/zlib.c (do_checksum): protoize the definition.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51211 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-07-10 12:49:58 +00:00
nobu f7946774dd stringio.c: remove unnecessary check
* ext/stringio/stringio.c (writable): remove unnecessary check for
  deprecated safe level 4.  [Fix GH-963]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51207 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-07-10 01:46:04 +00:00
nobu 54d9c77c8b extmk.rb: silently skip never-installed extensions
* ext/extmk.rb (extmake): as extension libraries start with '-'
  are not installed always, no problems if no errors occurred.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51205 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-07-10 01:22:55 +00:00
nobu 023835f475 basicsocket.c: swap examples [ci skip]
* ext/socket/basicsocket.c (bsock_do_not_reverse_lookup),
  (bsock_do_not_reverse_lookup_set): [DOC] swap examples. the code
  setting the flag is for the setter.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51193 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-07-08 05:05:27 +00:00
nobu ee750a8a8b pass saved errno
* ext/socket/socket.c (socket_s_ip_address_list): pass saved errno
  to rb_syserr_fail.

* ext/readline/readline.c (readline_getc, readline_s_set_input),
  (readline_s_set_output): ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51192 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-07-08 05:05:12 +00:00
hsbt 415e9cef0d * ext/tk/tcltklib.c: removed deprecated safe level.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51160 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-07-06 09:00:21 +00:00
normal df4e282eeb delay `exception: false' checks for minor speedup
Delay hash lookups until we are about to hit an exception.  This
gives a minor speedup ratio of 2-3% in the new bm_io_nonblock_noex
benchmark as well as reducing code.

* benchmark/bm_io_nonblock_noex.rb: new benchmark
* ext/openssl/ossl_ssl.c (no_exception_p): new function
  (ossl_start_ssl): adjust for no_exception_p
  (ossl_ssl_connect): adjust ossl_start_ssl call
  (ossl_ssl_connect_nonblock): ditto
  (ossl_ssl_accept): ditto
  (ossl_ssl_accept_nonblock): ditto
  (ossl_ssl_read_internal): adjust for no_exception_p
  (ossl_ssl_write_internal): ditto
  (ossl_ssl_write): adjust ossl_write_internal call
  (ossl_ssl_write_nonblock): ditto
* ext/stringio/stringio.c (strio_read_nonblock):
  delay exception check
* io.c (no_exception_p): new function
  (io_getpartial): call no_exception_p
  (io_readpartial): adjust for io_getpartial
  (get_kwargs_exception): remove
  (io_read_nonblock): adjust for io_getpartial,
  check no_exception_p on EOF
  (io_write_nonblock): call no_exception_p
  (rb_io_write_nonblock): do not check `exception: false'
  (argf_getpartial): adjust for io_getpartial
  [ruby-core:69778] [Feature #11318]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51113 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-07-02 22:22:14 +00:00
normal 6dda4f17a9 socket: memoize common socket families in fptr->mode
This provides a minor speedup by avoiding an extra syscall

	require 'socket'
	require 'benchmark'
	nr = 100000
	msg = 'hello world'
	buf = ''
	size = msg.bytesize
	puts(Benchmark.measure do
	  UNIXSocket.pair(:SEQPACKET) do |a, b|
	    nr.times do
	      a.sendmsg_nonblock(msg, 0, exception: false)
	      b.recv(size, 0, buf)
	    end
	  end
	end)

             user     system      total        real
before:  0.330000   0.340000   0.670000 (  0.678235)
 after:  0.290000   0.240000   0.530000 (  0.534527)

* ext/socket/rubysocket.h: flags for common socket families
  (rsock_getfamily): update signature
* include/ruby/io.h: comment socket FMODE flags
* ext/socket/init.c (rsock_getfamily): memoize family
* ext/socket/basicsocket.c: adjust rsock_getfamily calls
* ext/socket/ancdata.c: ditto
  [ruby-core:69713] [Feature #11298]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51097 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-07-02 01:58:14 +00:00
nobu 52436ce1b1 sizes.c.tmpl: extract RUBY_DEFINT
* template/sizes.c.tmpl: extract RUBY_DEFINT to define sizes of
  types checked by configure.in, and fix size of intptr_t in
  universal binary.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51056 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-28 22:24:05 +00:00
ngoto 33a17d4839 * test/-ext-/popen_deadlock/test_popen_deadlock.rb: test [Bug #11265]
* ext/-test-/popen_deadlock/infinite_loop_dlsym.c: new ext to call
  dlsym(3) infinitely without GVL, used in the above test.
  
* ext/-test-/popen_deadlock/extconf.rb: extconf.rb for the above
  ext. Currently, only enabled on Solaris (main target) and Linux
  (as a reference platform and for debugging the ext).


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51030 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-25 12:42:07 +00:00
normal 3d7473e179 ext/openssl/ossl_ssl.c: raise if kwargs given in blocking mode
OpenSSL::SSL::SSLSocket#sysread does not accept kwargs in blocking
mode, inform users if they make an error.

* ext/openssl/ossl_ssl.c (ossl_ssl_read_internal):
  do not process kwargs in blocking mode
* test/openssl/test_ssl.rb: test sysread

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51016 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-24 17:44:01 +00:00
normal d9d1b20d39 ext/socket/ancdata.c (bsock_recvmsg_internal): reduce stack use
Using 8K stack is probably too much.  As reference, ALLOCV falls
back to heap allocation at a mere 1K.  Since
bsock_recvmsg_internal is a function which will always allocate
and can trigger GC, it is in our best interest to minimize
stack usage to avoid scanning 8K of stack on GC.

[ruby-core:69595] [Feature #11263]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51003 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-23 23:40:53 +00:00
nobu e833adaa69 ext/objspace/objspace_dump.c: adjust indent
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50983 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-21 03:21:34 +00:00
sorah cc77375d2d * ext/objspace/objspace_dump.c(dump_object): Return empty JSON object when
passed object is a special const, instead of SEGV.
  Based patch by Kohei Suzuki (eagletmt). [ruby-core:69692] [Bug #11291]

* test/objspace/test_objspace.rb(test_dump_special_consts): Test for above fix.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50982 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-20 20:50:20 +00:00
nobu e282d78a44 extmk.rb: fix with-ext condition
* ext/extmk.rb: if no with-ext option is given, dafault to
  enable everything.  [ruby-dev:49108] [Bug #11280]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50966 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-18 22:58:14 +00:00
nobu 65ab26604b extmk.rb: fix with-ext condition
* ext/extmk.rb: configure intersection of with-ext and not
  without-ext, as withouts is no longer true by default if
  with-ext option is given.  [ruby-dev:49108] [Bug #11280]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50959 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-18 14:25:54 +00:00
hsbt 5d6ca9e950 * include/ruby/ruby.h: $SAFE=2 is now obsolete.
* dir.c, ext/fiddle/handle.c, ext/socket/basicsocket.c, file.c
  gc.c, io.c, process.c, safe.c, signal.c, win32/file.c:
  removed code for $SAFE=2
* test/erb/test_erb.rb, test/fiddle/test_handle.rb
  test/ruby/test_env.rb: removed tests for $SAFE=2.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50958 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-18 14:21:03 +00:00
ko1 37b38306e8 * ext/objspace/objspace.c (count_imemo_objects): support imemo_ment.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50947 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-18 05:36:14 +00:00
akr 07a296cead * ext/rbconfig/sizeof/extconf.rb: Check __float80.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50936 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-17 11:24:00 +00:00
hsbt bbf440c90b * include/ruby/ruby.h: $SAFE=3 is now obsolete.
* ext/socket/init.c, ext/socket/socket.c, ext/socket/tcpsocket.c
  ext/socket/udpsocket.c, gc.c, object.c, re.c, safe.c: removed code
  for $SAFE=3
* bootstraptest/test_method.rb, test/erb/test_erb.rb, test/ruby/test_dir.rb
  test/ruby/test_file.rb, test/ruby/test_method.rb, test/ruby/test_regexp.rb
  test/ruby/test_thread.rb: remove tests for $SAFE=3

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50932 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-17 05:29:51 +00:00
kazu af68619a6c fix unbalanced square brackets
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50922 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-16 14:40:20 +00:00
akr 96593ece29 * ext/rbconfig/sizeof/extconf.rb: Check several types defined in C99
and x86_64 ABI.

* template/sizes.c.tmpl: Relax a pattern for types.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50920 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-16 10:22:16 +00:00
nobu e4d0f54b1b date_parse.c: use ALLOCV
* ext/date/date_parse.c (s3e, date_zone_to_diff, parse_ddd_cb):
  use ALLOCV instead of ALLOCA get rid of stack overflow.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50919 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-16 09:46:06 +00:00
nobu d1496e8b8c date_strptime.c: use ALLOCV
* ext/date/date_strptime.c (read_digits): use ALLOCV instead of
  ALLOCA get rid of stack overflow.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50918 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-16 09:45:50 +00:00
normal a02a3f4649 socket: allow explicit buffer for recv and recv_nonblock
This reduces GC overhead and makes the API more consistent
with IO#read and IO#read_nonblock.

* ext/socket/basicsocket.c (bsock_recv): document outbuf
* ext/socket/unixsocket.c (unix_recvfrom): ditto
* ext/socket/init.c (rsock_strbuf, recvfrom_locktmp): new functions
  (rsock_s_recvfrom): support destination buffer as 3rd arg
  (rsock_s_recvfrom_nonblock): ditto
* string.c (rb_str_locktmp_ensure): export for internal ext
* test/socket/test_nonblock.rb: test recv_nonblock
* test/socket/test_unix.rb: test recv
  [ruby-core:69543] [Feature #11242]

Benchmark results:

             user     system      total        real
alloc    0.130000   0.280000   0.410000 (  0.420656)
extbuf   0.100000   0.220000   0.320000 (  0.318708)

-------------------8<--------------------
require 'socket'
require 'benchmark'
nr = 100000
msg = ' ' * 16384
size = msg.bytesize
buf = ' ' * size
UNIXSocket.pair(:DGRAM) do |a, b|
  Benchmark.bmbm do |x|
    x.report('alloc') do
      nr.times do
        b.send(msg, 0)
        a.recv(size, 0)
      end
    end

    x.report('extbuf') do
      nr.times do
        b.send(msg, 0)
        a.recv(size, 0, buf)
      end
    end
  end
end

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50912 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-15 20:02:43 +00:00
normal b9a91334c5 socket: allow exception-free nonblocking sendmsg/recvmsg
As documented before, exceptions are expensive and IO::Wait*able are too
common in socket applications to be the exceptional case.  Datagram
sockets deserve the same API which stream sockets are allowed with
read_nonblock and write_nonblock.

Note: this does not offer a performance advantage under optimal
conditions when both ends are equally matched in speed, but it it
does make debug output cleaner by avoiding exceptions whenever
the receiver slows down.

* ext/socket/ancdata.c (bsock_sendmsg_internal, bsock_recvmsg_internal):
  support "exception: false" kwarg
* ext/socket/init.c (rsock_s_recvfrom_nonblock):
  ditto
* ext/socket/init.c (rsock_s_recvfrom_nonblock): use rsock_opt_false_p
* ext/socket/socket.c (sock_connect_nonblock): ditto
* ext/socket/rubysocket.h (rsock_opt_false_p): new function
* ext/socket/basicsocket.c (bsock_recv_nonblock): update rdoc
* ext/socket/udpsocket.c (udp_recvfrom_nonblock): ditto
* test/socket/test_nonblock.rb: new tests

[ruby-core:69542] [Feature #11229]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50910 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-15 19:38:49 +00:00
nobu 1ab22a5672 raddrinfo.c: suppress a warning
* ext/socket/raddrinfo.c (parse_numeric_port): used only when
  inet_pton() is available.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50904 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-14 23:40:51 +00:00
nobu efb9a0fc18 call_without_gvl.c: no sys/select.h
* ext/-test-/gvl/call_without_gvl/call_without_gvl.c: sys/select.h
  is included by ruby/define.h if available.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50903 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-14 23:23:48 +00:00
kosaki 8ecd3b7114 * thread.c (thread_start_func_2): don't interrupt when last thread exit
unless main thread is already exited. Otherwise main thread could be
  wrongly interrupted when it uses rb_thread_call_without_gvl(). Patch
  by Takehiro Kubo. [Bug #11237][ruby-dev:49044][GH-898]
* test/-ext-/gvl/test_last_thread.rb: new test for the above fix.
* ext/-test-/gvl/call_without_gvl/call_without_gvl.c: new ext for the
  above test.
* ext/-test-/gvl/call_without_gvl/extconf.rb: ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50900 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-14 22:52:01 +00:00
akr 8bb581f8dd * ext/pathname/lib/pathname.rb (descend): Blockless form supported.
(ascend): Ditto.
  [ruby-core:68820] [Feature #11052] Patch by Piotr Szotkowski.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50897 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-14 15:14:46 +00:00
nobu d4440631b7 raddrinfo.c: suppress a warning
* ext/socket/raddrinfo.c (parse_numeric_port): explict cast to
  suppress a warning for precision losing conversion.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50894 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-14 12:25:42 +00:00
akr 2f8d3280e0 * ext/socket/raddrinfo.c (parse_numeric_port): Detect
port overflow.
  (numeric_getaddrinfo): Use parse_numeric_port.
  numeric_getaddrinfo fails if port is too big now.
  This makes rb_getaddrinfo invokes the real getaddrinfo()
  on such condition.
  This change is related to [ruby-core:69355] [Bug #11179].



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50890 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-14 10:11:01 +00:00
usa 9dcf6d9f96 * ext/io/console/depend (.list.chksum): revert a part of r50859, because
it was not mentioned at its commit log and it caused a build error on
  Windows ($(MAKE) is already quoted).


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50867 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-13 10:47:30 +00:00
hsbt b7d3ec2f69 * ext/openssl/ossl_ocsp.c: fix documentation on ocsp response cert status.
[fix GH-932] Patch by @chrisholmes

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50861 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-13 02:38:46 +00:00
hsbt 7c34b471be * ext/bigdecimal/bigdecimal.gemspec: Fix require paths for released gem.
[fix GH-929] Patch by @voxik
* ext/io/console/io-console.gemspec: ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50860 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-13 02:35:25 +00:00
nobu b031b3874b win32_vk.inc: suppress warnings
* ext/io/console/depend (win32_vk.inc): use offsetof() to suppress
  warnings against cast from pointer to integer of different size.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50859 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-13 01:59:58 +00:00
zzak 7b91efd7f3 * ext/date/date_core.c: Grammar fix found by @aiperon [ci skip]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50853 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-12 14:45:56 +00:00
hsbt 4162f90e03 * ext/zlib/zlib.c: Fix indentation for rdoc.
[Bug #11221][ruby-core:69465]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50834 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-11 10:11:30 +00:00
normal 5a67d8e2e9 * ext/socket/ancdata.c (bsock_sendmsg_internal): drop redundant assignment
We call memset to zero `mh' a few lines above anyways, making
explicitly zero-ing each field unnecessary.

Compilers optimize this code away anyways, but it still costs me
4 lines of my small terminal and even smaller attention span.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50786 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-05 22:21:47 +00:00
ngoto 607abcc7be * ext/socket/ancdata.c (bsock_sendmsg_internal): all arguments are
parsed even on systems without HAVE_STRUCT_MSGHDR_MSG_CONTROL
  to prevent SEGV caused by passing Qnil to RARRAY_LENINT and
  to preserve behavior before r50776.
  [Bug #11224] [ruby-core:69468] [Bug #11225] [ruby-core:69469]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50784 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-05 16:11:47 +00:00
normal 7ac8fe7407 ext/socket/ancdata.c (bsock_sendmsg_internal): portability fix
* ext/socket/ancdata.c (bsock_sendmsg_internal): avoid msg_control
  ptr if msg_controllen is zero to fix portability problems.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50781 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-05 08:28:14 +00:00
normal 20dedbfd9d ext/socket/ancdata.c (bsock_sendmsg_internal): fix build error from r50776
Systems without HAVE_STRUCT_MSGHDR_MSG_CONTROL still need
controls to be nil for the check after argument parsing.

Note: not actually tested on a real system without msg_control

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50780 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-05 00:18:30 +00:00
normal c467547301 ext/socket/ancdata.c (bsock_sendmsg_internal): use rb_scan_args
This should make the code more maintainable and make it easier to
add keyword argument support for "exception: false" in the future.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50776 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-04 20:50:08 +00:00
hsbt 0eb195cee3 * ext/win32ole/win32ole.c: fix a typo. Patch by @davydovanton
[fix GH-923]
* include/ruby/st.h: ditto.
* include/ruby/util.h: ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50765 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-04 02:53:11 +00:00
normal 14cbd61f01 ext/openssl/lib/openssl/ssl.rb: use io/nonblock instead of fcntl
[ruby-core:69382] [Feature #11190]

IO#nonblock= is easier-to-read, potentially more portable, and
avoids redundantly setting flags.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50762 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-04 01:09:09 +00:00
akr 899d49bd29 * ext/rbconfig/sizeof/extconf.rb: Check C99 standard integer types.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50750 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-03 12:14:21 +00:00
akr 2f9b7898f6 * configure.in: Don't check __int128.
* ext/rbconfig/sizeof/extconf.rb: Check __int128.

* ext/rbconfig/sizeof/depend: sizes.c depends on
  ext/rbconfig/sizeof/extconf.rb.

* template/sizes.c.tmpl: Detect check_sizeof.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50749 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-03 12:00:50 +00:00
nobu 8e7393559f tkutil.c: fix out-of-bounds access
* ext/tk/tkutil/tkutil.c (cbsubst_table_setup): check array
  length not access out-of-bounds.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50708 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-01 01:55:10 +00:00
nobu 847e919e81 ext/date/date_core.c: [DOC] fold long paragraphs
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50707 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-05-31 23:07:49 +00:00
zzak c10df9b698 [DOC] Decrease heading under DateTime [ci skip]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50705 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-05-31 22:46:32 +00:00
nobu 30e6825e1b tkutil.c: fix memory leak and segfault
* ext/tk/tkutil/tkutil.c (cbsubst_append_inf_key): extract a
  function append a key in subst info to a string.  make result
  strings first and get rid of potential memory leak.

* ext/tk/tkutil/tkutil.c (cbsubst_get_subst_arg): allocate the
  result buffer as a string to fix:

  * memory leak when the argument key is not found:

      loop {Tk::Event.subst_arg(:a) rescue nil}

  * buffer overflow segfault when many arguments:

      class T < TkUtil::CallbackSubst
        _setup_subst_table([[?a, ?A, :_a]], [])
        subst_arg(*[:_a]*1000).size
      end

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50704 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-05-31 22:32:14 +00:00
zzak 45458752d3 * ext/date/date_core.c: [DOC] Add comparison of Time and DateTime
Patch provided by @pixeltrix


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50702 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-05-31 19:49:03 +00:00
nobu 912ae57b8a tkutil.c: reduce unnecessary buffer
* ext/tk/tkutil/tkutil.c (cbsubst_get_subst_key): reduce
  unnecessary buffer.  the result string is one byte per one word.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50696 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-05-31 15:08:05 +00:00
normal 5e3455597d ext/socket/ancdata.c: use RB_GC_GUARD instead of volatile
See doc/extension.rdoc for explanation.

[ruby-core:69419] [Feature #11198]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50685 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-05-30 08:19:37 +00:00
nobu 451fe269e5 openssl: wrapper object before alloc
* ext/openssl: make wrapper objects before allocating structs to
  get rid of potential memory leaks.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50673 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-05-29 05:55:02 +00:00
nobu 5924f9a684 psych: allocate structs with wrapper
* ext/psych/psych_emitter.c (allocate): allocate structs with
  making new wrapper objects and get rid of potential memory leak.

* ext/psych/psych_parser.c (allocate): ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50672 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-05-29 05:44:01 +00:00
normal d8bbb5eda8 socket: avoid redundant fcntl on Linux
* ext/socket/ancdata.c (bsock_sendmsg_internal,
  bsock_recvmsg_internal):
  avoid redundant fcntl on Linux
  [ruby-core:69154] [Feature #11145]
* ext/socket/init.c (rsock_s_recvfrom_nonblock): ditto
* ext/socket/rubysocket.h (MSG_DONTWAIT_RELIABLE): new macro

MSG_DONTWAIT is enough to force non-blocking I/O under Linux,
so avoid changing the state of a socket.  This will allow certain
threads to do a non-destructive non-blocking "peek" while others
block (without relying on an extra ppoll syscall).

We shall be conservative about enabling this feature since some
OSes may have incomplete support for MSG_DONTWAIT.  I shall
defer to a FreeBSD expert to enable that for FreeBSD.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50666 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-05-29 02:24:18 +00:00
ko1 6abf7938bf * ext/objspace/objspace.c: add two methods to debug internals.
* ObjectSpace.internal_class_of: return RBASIC_CLASS(obj).
  * ObjectSpace.internal_super_of: return RCLASS_SUPER(cls).
* NEWS: add information about both methods.
* test/objspace/test_objspace.rb: add tests for both methods.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50662 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-05-28 19:40:04 +00:00
nobu 4d059bf9f5 generator.c: allocate structs with wrapper
* ext/json/generator/generator.c (cState_s_allocate): allocate
  structs with making new wrapper objects and get rid of potential
  memory leak.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50661 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-05-28 07:17:55 +00:00
nobu cbf902fc33 parser.rl: allocate structs with wrapper
* ext/json/parser/parser.rl (cJSON_parser_s_allocate): allocate
  structs with making new wrapper objects and get rid of potential
  memory leak.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50660 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-05-28 07:17:42 +00:00
nobu 828de1a06d win32ole.c: wrapper object before alloc
* ext/win32ole/win32ole.c (Init_win32ole): make wrapper object
  before making st_table.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50659 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-05-28 06:46:17 +00:00
nobu fbc67dbf2c tcltklib.c: allocate structs with wrapper
* ext/tk/tcltklib.c (ip_create_slave_core): allocate structs with
  making new wrapper objects and get rid of potential memory leak.

* ext/tk/tkutil/tkutil.c (allocate_cbsubst_info): ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50658 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-05-28 06:45:55 +00:00
nobu d50260117f tkutil.c: check arguments type
* ext/tk/tkutil/tkutil.c (cbsubst_get_subst_key): check arguments
  type.  implicit conversion is disabled to get rid of method
  calls which can modify other arguments.

* ext/tk/tkutil/tkutil.c (cbsubst_table_setup): ditto.

* ext/tk/tkutil/tkutil.c (cbsubst_scan_args): ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50657 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-05-28 06:44:43 +00:00
nobu 0c58f69791 tkutil.c: check type
* ext/tk/tkutil/tkutil.c (cbsubst_get_subst_key): ensure the
  result type of a method call to be an array before accessing by
  RARRAY macros.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50656 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-05-28 05:53:05 +00:00
nobu 86f7fceef4 Fix typo in samples for tk ext [skip ci]
* ext/tk/sample/figmemo_sample.rb (open_file),
  ext/tk/sample/tktextio.rb (TkTextIO): fix typo in messages.
  [Fix GH-916]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50653 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-05-27 21:56:04 +00:00
nobu c83883cf4e tcltklib.c: fix memory leak
* ext/tk/tcltklib.c (ip_init): reject already initialized
  interpreter to fix memory leak.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50652 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-05-27 13:36:27 +00:00