diff --git a/bin/ikarus b/bin/ikarus index e112280..ec0bfc9 100755 Binary files a/bin/ikarus and b/bin/ikarus differ diff --git a/bin/ikarus-runtime.c b/bin/ikarus-runtime.c index 5a8cd35..e321cbb 100644 --- a/bin/ikarus-runtime.c +++ b/bin/ikarus-runtime.c @@ -646,7 +646,13 @@ ikrt_file_exists(ikp filename){ ikp ikrt_delete_file(ikp filename){ - char* str = string_data(filename); + char* str; + if(tagof(filename) == bytevector_tag){ + str = (char*) filename + off_bytevector_data; + } else { + fprintf(stderr, "bug in ikrt_delete_file\n"); + exit(-1); + } int err = unlink(str); if(err == 0){ return 0; diff --git a/src/ikarus.boot b/src/ikarus.boot index 63945cc..3622df0 100644 Binary files a/src/ikarus.boot and b/src/ikarus.boot differ diff --git a/src/ikarus.posix.ss b/src/ikarus.posix.ss index 519ace9..0601c36 100644 --- a/src/ikarus.posix.ss +++ b/src/ikarus.posix.ss @@ -60,7 +60,8 @@ (lambda (x) (unless (string? x) (error 'delete-file "filename ~s is not a string" x)) - (let ([v (foreign-call "ikrt_delete_file" x)]) + (let ([v (foreign-call "ikrt_delete_file" + (string->utf8-bytevector x))]) (case v [(0) (void)] [else