X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Ftarget-load.lisp;h=f30b8f109d0bb2f33623a39e3a3775eb6f587b27;hb=7c5138fcbdb302abc563a2060493f2f0304ae902;hp=87403bacf01aa019e0bc4c4a21bb07d10c0e52fc;hpb=771b864c8f32af7734bc0550aeaf1539fc4df194;p=sbcl.git diff --git a/src/code/target-load.lisp b/src/code/target-load.lisp index 87403ba..f30b8f1 100644 --- a/src/code/target-load.lisp +++ b/src/code/target-load.lisp @@ -80,14 +80,20 @@ :element-type '(unsigned-byte 8)) (load-as-fasl stream verbose print))) (t - (let ((first-line (with-open-file (stream truename :direction :input) - (read-line stream nil))) - (fhsss *fasl-header-string-start-string*)) + (let* ((fhsss *fasl-header-string-start-string*) + (first-line (make-array (length fhsss) + :element-type '(unsigned-byte 8))) + (read-length + (with-open-file (stream truename + :direction :input + :element-type '(unsigned-byte 8)) + (read-sequence first-line stream)))) (cond - ((and first-line - (>= (length (the simple-string first-line)) - (length fhsss)) - (string= first-line fhsss :end1 (length fhsss))) + ((and (= read-length (length fhsss)) + (do ((i 0 (1+ i))) + ((= i read-length) t) + (when (/= (char-code (aref fhsss i)) (aref first-line i)) + (return)))) (internal-load pathname truename if-does-not-exist verbose print :binary)) (t