From f382695345743dd0e9cbd71c5b72f17fcf6cd69b Mon Sep 17 00:00:00 2001 From: John Ralls Date: Sun, 4 Dec 2016 12:35:42 -0800 Subject: [PATCH] Bug 775567 - Importing QIF file from PayPal crashes GnuCash 2.6.14 on Windows XP service pack 3 Guile-1.8 doesn't know about BOM so check for one and strip it if it's there. --- src/import-export/qif-imp/qif-file.scm | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/import-export/qif-imp/qif-file.scm b/src/import-export/qif-imp/qif-file.scm index e03fc9ab2e..e428068c50 100644 --- a/src/import-export/qif-imp/qif-file.scm +++ b/src/import-export/qif-imp/qif-file.scm @@ -96,6 +96,25 @@ (string-append str "\n" (_ "Read aborted."))) (set! abort-read #t))) + (define (strip-bom) + (let ((c1 (read-char))) + (if (char=? c1 (integer->char #xEF)) + (let ((c2 (read-char))) + (if (char=? c2 (integer->char #xBB)) + (let ((c3 (read-char))) + (if (char=? c3 (integer->char #xBF)) #t + (begin + (unread-char c3) + (unread-char c2) + (unread-char c1) + #f))) + (begin + (unread-char c2) + (unread-char c1) + #f))) + (begin + (unread-char c1) + #f)))) (qif-file:set-path! self path) (if (not (access? path R_OK)) @@ -112,6 +131,7 @@ (with-input-from-file path (lambda () + (strip-bom) ;; loop over lines (let line-loop () (set! line (read-delimited delimiters))