summaryrefslogtreecommitdiff
path: root/io.c
AgeCommit message (Collapse)Author
2025-03-13merge revision(s) bccec7fb468ad977be75e7e4c2644b4ea845ab0c, ↵Hiroshi SHIBATA
5f8ebcada099351acbc22db264e7cd3773c2bdc4, e13575bb7938e9e5b6a79bfca1b3793123f479da, 4adcfc8cd7a17593a6590025da2b03eebf4fd63c: [Backport #19584] Fix crash in rb_gc_register_address [Bug #19584] Some C extensions pass a pointer to a global variable to rb_gc_register_address. However, if a GC is triggered inside of rb_gc_register_address, then the object could get swept since it does not exist on the stack. [Bug #19584] Register global variable address before assignment [Bug #19584] Register global variables before assignment [Bug #19584] [DOC] Tweek description of `rb_gc_register_address`
2025-03-13merge revision(s) f423f6e10c0c226dfed98e7cb7a5d489191dfa35: [Backport #21131]Hiroshi SHIBATA
Ensure IO.copy_stream buffer is an independent string Otherwise, changes to the buffer by the destination write method could result in data changing for supposedly independent strings. Fixes [Bug #21131]
2025-01-11merge revision(s) 8034e9c3d001ca3dff124ab42972684eac8af2ae: [Backport #20995]nagachika
[Bug #20995] Protect `IO.popen` block from exiting by exception
2024-12-15merge revision(s) e90b447655dd39ad1eb645cdaae450efd605db00: [Backport #20924]nagachika
[Bug #20924] Fix reading with delimiter in wide character encodings
2024-07-15Revert "merge revision(s) 5e0c17145131e073814c7e5b15227d0b4e73cabe: ↵nagachika
[Backport #20169]" This reverts commit 6b73406833dd22e489114fa77c1c80c4b7af2ed0.
2024-07-15merge revision(s) 5e0c17145131e073814c7e5b15227d0b4e73cabe: [Backport #20169]nagachika
Make io_fwrite safe for compaction [Bug #20169] Embedded strings are not safe for system calls without the GVL because compaction can cause pages to be locked causing the operation to fail with EFAULT. This commit changes io_fwrite to use rb_str_tmp_frozen_no_embed_acquire, which guarantees that the return string is not embedded.
2024-05-18Adjust `else` style to be consistent in each files [ci skip]Nobuyoshi Nakada
2024-03-31merge revision(s) 2554c5d3b8738a248cedb2fea96dfab9fbe19417: [Backport #20231]nagachika
Don't wait in `io_binwrite_string` if not necessary. (#9792) --- io.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-)
2023-07-22merge revision(s) 0b2613f44309bddae45562c9f3a14ed43e56959b: [Backport #19640]nagachika
`rb_io_puts` should not write zero length strings. (#7806) --- io.c | 40 ++++++++++++++++++++++++---------------- test/fiber/test_io.rb | 28 ++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+), 16 deletions(-)
2022-12-23Docs: path: option for IO.newzverok
Notes: Merged: https://github.com/ruby/ruby/pull/6985
2022-12-22[DOC] IO#read doesn't always read in binary modeAlan Wu
When `maxlen` is `nil`, it uses the data mode of the stream. For example in the following: ```ruby File.binwrite("a.txt", "\r\n\r") p File.open("a.txt", "rt").read # "\n\n" p File.open("a.txt", "rt").read(3) # "\r\n\r" ``` Note, this newline translation is _not_ specific to Windows. Notes: Merged: https://github.com/ruby/ruby/pull/6982 Merged-By: XrXr
2022-12-08Introduce `IO.new(..., path:)` and promote `File#path` to `IO#path`. (#6867)Samuel Williams
Notes: Merged-By: ioquatix <samuel@codeotaku.com>
2022-12-02io.c (read_all): grow the buffer exponentially when size is unknownJean Boussier
[Feature #6047] Currently it's grown by `BUFSIZ` (1024) on every iteration which is bit wasteful. Instead we can double the capacity whenever there is less than `BUFSIZ` capacity left. Notes: Merged: https://github.com/ruby/ruby/pull/6829
2022-12-02Introduce encoding check macroS-H-GAMELINKS
Notes: Merged: https://github.com/ruby/ruby/pull/6700
2022-12-02Introduce argf_encoding functionS-H-GAMELINKS
Notes: Merged: https://github.com/ruby/ruby/pull/6672
2022-12-02Reuse NIL_OR_UNDEF_P macroS-H-GAMELINKS
Notes: Merged: https://github.com/ruby/ruby/pull/6787
2022-11-16Using UNDEF_P macroS-H-GAMELINKS
Notes: Merged: https://github.com/ruby/ruby/pull/6721
2022-11-09[DOC] Enhanced RDoc for IO (#6669)Burdette Lamar
Notes: Merged-By: BurdetteLamar <BurdetteLamar@Yahoo.com>
2022-10-29[DOC] Enhanced RDOc for IO (#6642)Burdette Lamar
In io.c treats: #close #close_read #close_write #closed Notes: Merged-By: BurdetteLamar <BurdetteLamar@Yahoo.com>
2022-10-15Update `Fiber::Scheduler` documentation. (#6562)Samuel Williams
Notes: Merged-By: ioquatix <samuel@codeotaku.com>
2022-10-15Introduce `Fiber::Scheduler#io_select` hook for non-blocking `IO.select`. ↵Samuel Williams
(#6559) Notes: Merged-By: ioquatix <samuel@codeotaku.com>
2022-10-15Copy `IO#timeout` on `IO#dup`. (#6546)Samuel Williams
Notes: Merged-By: ioquatix <samuel@codeotaku.com>
2022-10-11Ignore failure to set nonblock mode. (#6524)Samuel Williams
Notes: Merged-By: ioquatix <samuel@codeotaku.com>
2022-10-08Try `nil` as default for 'default timeout'. (#6509)Samuel Williams
Notes: Merged-By: ioquatix <samuel@codeotaku.com>
2022-10-07Add IO#timeout attribute and use it for blocking IO operations. (#5653)Samuel Williams
Notes: Merged-By: ioquatix <samuel@codeotaku.com>
2022-10-06[DOC] Integrate io_streams.rdoc into io.c (#6491)Burdette Lamar
Integrate io_streams.rdoc into io.c Notes: Merged-By: BurdetteLamar <BurdetteLamar@Yahoo.com>
2022-10-02[DOC] RDoc changes for IO (#6458)Burdette Lamar
Moves Expect library doc into io.c. Changes certain links to local sections, now pointing to sections in doc/io_streams.rdoc. Removes local sections now superseded by sections in doc/io_streams.rdoc. Notes: Merged-By: BurdetteLamar <BurdetteLamar@Yahoo.com>
2022-09-16[ci skip] Fix typos in documentation in io.cPeter Zhu
2022-09-11[Win32] Negative length `IO#sysread`Jeremy Bopp
Raise `ArgumentError` in `IO#sysread` on Windows when given a negative length. Fixes [Bug #18880] Notes: Merged: https://github.com/ruby/ruby/pull/6354 Merged-By: nobu <nobu@ruby-lang.org>
2022-09-08[Bug #5317] Use `rb_off_t` instead of `off_t`Nobuyoshi Nakada
Get rid of the conflict with system-provided small `off_t`. Notes: Merged: https://github.com/ruby/ruby/pull/6329
2022-08-25Raise ArgumentError for IO.foreach with limit of 0Jeremy Evans
Makes behavior consistent with IO.readlines. Fixes [Bug #18767] Notes: Merged: https://github.com/ruby/ruby/pull/5954
2022-08-05[DOC] Mention Windows text mode EOF marker interpretationAlan Wu
I don't think this is super well known so it's worth mentioning as it can be a pitfall. See: https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/fopen-wfopen?view=msvc-170 Co-authored-by: Nobuyoshi Nakada <nobu@ruby-lang.org> Notes: Merged: https://github.com/ruby/ruby/pull/6212
2022-08-05[DOC] Clarify that `IO.read` uses text modeAlan Wu
See: https://bugs.ruby-lang.org/issues/18882#note-13 [Bug #18882] Notes: Merged: https://github.com/ruby/ruby/pull/6212
2022-07-28[DOC] Cross references for `ARGF`Nobuyoshi Nakada
2022-07-27Fix documentation for ARGF.inplace_mode{,=}Jeremy Evans
The value affects the name of the backup file created, not the name of the file modified (as the file is modified in place). Fixes [Bug #18920]
2022-07-27Adjust styles [ci skip]Nobuyoshi Nakada
2022-07-23[DOC] IO#eofKaíque Kandy Koga
Use IO#eof? instead of I#eof? Notes: Merged: https://github.com/ruby/ruby/pull/6172
2022-07-21Do not chomp trailing line separator IO#each with nil separator and chompJeremy Evans
nil separator means no sepator, so chomp should not remove a line separator. Partially Fixes [Bug #18770] Notes: Merged: https://github.com/ruby/ruby/pull/6164
2022-07-21Expand tabs [ci skip]Takashi Kokubun
[Misc #18891] Notes: Merged: https://github.com/ruby/ruby/pull/6094
2022-07-21Revert "Do not chomp trailing line separator IO#each with nil separator and ↵Jeremy Evans
chomp" This reverts commit 04f86ad0b5d2fe4711ff300d855228a6aed55f33. This is causing CI issues, reverting for now.
2022-07-21Do not chomp trailing line separator IO#each with nil separator and chompJeremy Evans
nil separator means no sepator, so chomp should not remove a line separator. Partially Fixes [Bug #18770] Notes: Merged: https://github.com/ruby/ruby/pull/5959
2022-07-15[DOC] Fix documentation for ARGF#readlinesPeter Zhu
[Bug #18909] Notes: Merged: https://github.com/ruby/ruby/pull/6137
2022-07-14[DOC] Fix typo in documentation for IO#readlinesPeter Zhu
2022-07-07[Bug #18892] Reset `ARGF.lineno` after reading shebangNobuyoshi Nakada
Notes: Merged: https://github.com/ruby/ruby/pull/6097
2022-07-06[Bug #18898] Fallback invalid external encoding to the defaultNobuyoshi Nakada
Notes: Merged: https://github.com/ruby/ruby/pull/6093 Merged-By: nobu <nobu@ruby-lang.org>
2022-06-25Copy `IO#wait*` methods from `io-wait` gem to `io.c`.Samuel Williams
Notes: Merged: https://github.com/ruby/ruby/pull/6036
2022-06-20Allow to just warn as bool expected, without an exceptionNobuyoshi Nakada
Notes: Merged: https://github.com/ruby/ruby/pull/6039
2022-06-17Using is_ascii_string to check encodingS-H-GAMELINKS
Notes: Merged: https://github.com/ruby/ruby/pull/5867
2022-06-13Handle case where write result is zero.Samuel Williams
Notes: Merged: https://github.com/ruby/ruby/pull/6009
2022-06-09Stop ignoring 4th positional argument to IO.#{foreach,readlines}Jeremy Evans
Fixes [Bug #18771] Notes: Merged: https://github.com/ruby/ruby/pull/5953