From b9a9fdaa3fe378f3774e46195594ca861d39221d Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Tue, 26 Jul 2016 10:47:19 -0600 Subject: [PATCH] check for "config.rktd" before trying to read it for interactive --- racket/src/racket/main.c | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/racket/src/racket/main.c b/racket/src/racket/main.c index 4f1db74af1..40b14155ee 100644 --- a/racket/src/racket/main.c +++ b/racket/src/racket/main.c @@ -125,8 +125,7 @@ static Scheme_Object *get_init_filename(Scheme_Env *env, f = _scheme_apply(build_path, 2, a); if (SCHEME_PATHP(f)) { char *filename; - filename = SCHEME_PATH_VAL(f); - filename = scheme_expand_filename(filename, -1, "startup", NULL, SCHEME_GUARD_FILE_EXISTS); + filename = scheme_expand_filename(SCHEME_PATH_VAL(f), -1, "startup", NULL, SCHEME_GUARD_FILE_EXISTS); if(scheme_file_exists(filename)) { p->error_buf = save; return scheme_make_path(filename); @@ -139,15 +138,20 @@ static Scheme_Object *get_init_filename(Scheme_Env *env, a[1] = scheme_make_path("config.rktd"); f = _scheme_apply(build_path, 2, a); if (SCHEME_PATHP(f)) { - Scheme_Object * port; - port = scheme_open_input_file(SCHEME_PATH_VAL(f), "get-init-filename"); - f = scheme_read(port); - scheme_close_input_port(port); - if(SCHEME_HASHTRP(f)) { - f = scheme_hash_tree_get((Scheme_Hash_Tree *)f, scheme_intern_symbol(init_filename_sym)); - if(f) { - p->error_buf = save; - return f; + char *filename; + filename = scheme_expand_filename(SCHEME_PATH_VAL(f), -1, "startup", NULL, + SCHEME_GUARD_FILE_EXISTS | SCHEME_GUARD_FILE_READ); + if(scheme_file_exists(filename)) { + Scheme_Object * port; + port = scheme_open_input_file(SCHEME_PATH_VAL(f), "get-init-filename"); + f = scheme_read(port); + scheme_close_input_port(port); + if(SCHEME_HASHTRP(f)) { + f = scheme_hash_tree_get((Scheme_Hash_Tree *)f, scheme_intern_symbol(init_filename_sym)); + if(f) { + p->error_buf = save; + return f; + } } } }