summaryrefslogtreecommitdiffstats
path: root/byterun/sys.c
diff options
context:
space:
mode:
authorDamien Doligez <damien.doligez-inria.fr>2006-09-20 11:14:37 +0000
committerDamien Doligez <damien.doligez-inria.fr>2006-09-20 11:14:37 +0000
commitfbea66a95e1d890799b6b573bcd0131558b9ba92 (patch)
tree8bfb6bd4b2688d06b2c9934a2b026797b5e91733 /byterun/sys.c
parent403f1e1a34fb6b62072c9e89b84ac2aad3e37f9e (diff)
fusion des changements 3.09.2 -> 3.09.3
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@7619 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Diffstat (limited to 'byterun/sys.c')
-rw-r--r--byterun/sys.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/byterun/sys.c b/byterun/sys.c
index 7e130c065..9d3bedbbb 100644
--- a/byterun/sys.c
+++ b/byterun/sys.c
@@ -72,7 +72,7 @@ CAMLexport void caml_sys_error(value arg)
CAMLparam1 (arg);
char * err;
CAMLlocal1 (str);
-
+
if (errno == EAGAIN || errno == EWOULDBLOCK) {
caml_raise_sys_blocked_io();
} else {
@@ -233,7 +233,7 @@ CAMLprim value caml_sys_system_command(value command)
int status, retcode;
char *buf;
intnat len;
-
+
len = caml_string_length (command);
buf = caml_stat_alloc (len + 1);
memmove (buf, String_val (command), len + 1);
@@ -311,7 +311,10 @@ CAMLprim value caml_sys_read_directory(value path)
struct ext_table tbl;
caml_ext_table_init(&tbl, 50);
- if (caml_read_directory(String_val(path), &tbl) == -1) caml_sys_error(path);
+ if (caml_read_directory(String_val(path), &tbl) == -1){
+ caml_ext_table_free(&tbl, 1);
+ caml_sys_error(path);
+ }
caml_ext_table_add(&tbl, NULL);
result = caml_copy_string_array((char const **) tbl.contents);
caml_ext_table_free(&tbl, 1);