From 302e3218b7d487539ec305bf23881a6ee7d5be99 Mon Sep 17 00:00:00 2001 From: Bryan Newbold Date: Mon, 20 Feb 2017 00:05:29 -0800 Subject: Import Upstream version 5e1 --- Link.scm | 31 ++++++++++++++----------------- 1 file changed, 14 insertions(+), 17 deletions(-) (limited to 'Link.scm') diff --git a/Link.scm b/Link.scm index 8e01de9..e0ea89b 100644 --- a/Link.scm +++ b/Link.scm @@ -57,7 +57,6 @@ (map char-downcase (string->list name)))))) (define link:link (lambda (file . libs) - (define oloadpath *load-pathname*) (let* ((sl (string-length file)) (lasl (string-length link:able-suffix)) (fname (let loop ((i (- sl 1))) @@ -72,26 +71,23 @@ (substring fname 0 (- nsl lasl))) (else fname))) (linkobj #f)) - (set! *load-pathname* file) (if (and (provided? 'sun-dl) (< 3 sl) (not (eqv? (string-ref file 0) '#\/))) (set! file (string-append "./" file))) - (set! linkobj (or (provided? 'sun-dl) (dyn:link file))) - (and linkobj - (for-each (lambda (lib) - (or (dyn:link lib) (slib:error "couldn't link: " lib))) - libs)) - (if (provided? 'sun-dl) (set! linkobj (dyn:link file))) - (cond ((not linkobj) - (set! *load-pathname* oloadpath) #f) - ((dyn:call (file->init_name name) linkobj) - (set! *load-pathname* oloadpath) #t) - (else - (dyn:unlink linkobj) - (set! *load-pathname* oloadpath) #f))))))) + (with-load-pathname file + (lambda () + (set! linkobj (or (provided? 'sun-dl) (dyn:link file))) + (and linkobj + (for-each (lambda (lib) + (or (dyn:link lib) + (slib:error "couldn't link: " lib))) + libs)) + (if (provided? 'sun-dl) (set! linkobj (dyn:link file))) + (cond ((not linkobj) #f) + ((dyn:call (file->init_name name) linkobj) #t) + (else (dyn:unlink linkobj) #f)))))))) -(cond ((defined? vms:dynamic-link-call) (define link:able-suffix #f) (define (link:link file) @@ -103,7 +99,8 @@ (set! dir (substring file 0 (+ i 1))) (set! fil (substring file (+ i 1) (string-length file)))) (else (loop (- i 1))))) - (vms:dynamic-link-call dir fil (file->init_name fil))))) + (with-load-pathname file + (lambda () (vms:dynamic-link-call dir fil (file->init_name fil))))))) (cond ((provided? 'sun-dl) -- cgit v1.2.3