Project

General

Profile

Bug #4274 » argf_segfault.patch

rbjl (Jan Lelis), 01/13/2011 05:45 AM

View differences:

io.c.original → io.c
ARGF.next_p = 0;
retry:
if (RARRAY_LEN(ARGF.argv) > 0) {
ARGF.filename = rb_ary_shift(ARGF.argv);
fn = StringValueCStr(ARGF.filename);
VALUE fname = rb_ary_entry(ARGF.argv, 0);
fn = StringValueCStr(fname);
if (strlen(fn) == 1 && fn[0] == '-') {
ARGF.filename = rb_ary_shift(ARGF.argv);
ARGF.current_file = rb_stdin;
if (ARGF.inplace) {
rb_warn("Can't do inplace edit for stdio; skipping");
......
}
}
else {
FilePathValue(fname);
fname = rb_str_encode_ospath(fname);
if (eaccess(StringValueCStr(fname), R_OK) < 0){
ARGF.init_p = 0;
ARGF.next_p = 0;
rb_raise(rb_eIOError, "next argf file is not readable");
}
ARGF.filename = rb_ary_shift(ARGF.argv);
int fr = rb_sysopen(ARGF.filename, O_RDONLY, 0);
if (ARGF.inplace) {
(3-3/3)