From 5218cb8267f3ed47cda2d139bf41487fb330c851 Mon Sep 17 00:00:00 2001 From: dons Date: Fri, 18 Jun 2004 09:02:40 +0000 Subject: [PATCH] [project @ 2004-06-18 09:02:40 by dons] Have loadObj ignore requests to load an object more than once, instead of actually loading the object, then dying. This change lets user-land loaders safely work inside GHCi, when they would have no way to know what packages had already been loaded. Help from SimonM and Andre Pang. --- ghc/rts/Linker.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/ghc/rts/Linker.c b/ghc/rts/Linker.c index 911c880..a9d3089 100644 --- a/ghc/rts/Linker.c +++ b/ghc/rts/Linker.c @@ -983,24 +983,25 @@ loadObj( char *path ) /* fprintf(stderr, "loadObj %s\n", path ); */ - /* Check that we haven't already loaded this object. Don't give up - at this stage; ocGetNames_* will barf later. */ + /* Check that we haven't already loaded this object. + Ignore requests to load multiple times */ { ObjectCode *o; int is_dup = 0; for (o = objects; o; o = o->next) { - if (0 == strcmp(o->fileName, path)) + if (0 == strcmp(o->fileName, path)) { is_dup = 1; + break; /* don't need to search further */ + } } if (is_dup) { - fprintf(stderr, - "\n\n" + IF_DEBUG(linker, belch( "GHCi runtime linker: warning: looks like you're trying to load the\n" "same object file twice:\n" " %s\n" - "GHCi will continue, but a duplicate-symbol error may shortly follow.\n" - "\n" - , path); + "GHCi will ignore this, but be warned.\n" + , path)); + return 1; /* success */ } } -- 1.7.10.4