Bug #4274 » argf_segfault.patch
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) {
|
- « Previous
- 1
- 2
- 3
- Next »