[bugfix] port should be closed properly
This commit is contained in:
parent
fccb4b16ea
commit
8e90517224
|
@ -601,6 +601,7 @@ pic_port_read_line(pic_state *pic)
|
||||||
int c;
|
int c;
|
||||||
struct pic_port *port = pic_stdin(pic), *buf;
|
struct pic_port *port = pic_stdin(pic), *buf;
|
||||||
struct pic_string *str;
|
struct pic_string *str;
|
||||||
|
pic_value res = pic_eof_object();
|
||||||
|
|
||||||
pic_get_args(pic, "|p", &port);
|
pic_get_args(pic, "|p", &port);
|
||||||
|
|
||||||
|
@ -613,11 +614,12 @@ pic_port_read_line(pic_state *pic)
|
||||||
|
|
||||||
str = pic_get_output_string(pic, buf);
|
str = pic_get_output_string(pic, buf);
|
||||||
if (pic_str_len(str) == 0 && c == EOF) {
|
if (pic_str_len(str) == 0 && c == EOF) {
|
||||||
return pic_eof_object();
|
/* EOF */
|
||||||
}
|
} else {
|
||||||
else {
|
res = pic_obj_value(str);
|
||||||
return pic_obj_value(str);
|
|
||||||
}
|
}
|
||||||
|
pic_close_port(pic, buf);
|
||||||
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
static pic_value
|
static pic_value
|
||||||
|
@ -638,6 +640,7 @@ pic_port_read_string(pic_state *pic){
|
||||||
pic_str *str;
|
pic_str *str;
|
||||||
int k, i;
|
int k, i;
|
||||||
int c;
|
int c;
|
||||||
|
pic_value res = pic_eof_object();
|
||||||
|
|
||||||
pic_get_args(pic, "i|p", &k, &port);
|
pic_get_args(pic, "i|p", &k, &port);
|
||||||
|
|
||||||
|
@ -654,12 +657,12 @@ pic_port_read_string(pic_state *pic){
|
||||||
|
|
||||||
str = pic_get_output_string(pic, buf);
|
str = pic_get_output_string(pic, buf);
|
||||||
if (pic_str_len(str) == 0 && c == EOF) {
|
if (pic_str_len(str) == 0 && c == EOF) {
|
||||||
return pic_eof_object();
|
/* EOF */
|
||||||
|
} else {
|
||||||
|
res = pic_obj_value(str);
|
||||||
}
|
}
|
||||||
else {
|
pic_close_port(pic, buf);
|
||||||
return pic_obj_value(str);
|
return res;
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static pic_value
|
static pic_value
|
||||||
|
|
Loading…
Reference in New Issue