diff options
author | Ludovic Courtès <ludo@gnu.org> | 2020-01-03 16:01:11 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2020-01-03 16:06:26 +0100 |
commit | af0aefd8c10701fa32341506e36297e5105f6143 (patch) | |
tree | 84bcb0aee535143fd58ade21104690037012d96e | |
parent | f4cde9ac4aedb516c050a30fd999673da434bfa0 (diff) | |
download | guix-af0aefd8c10701fa32341506e36297e5105f6143.tar.gz |
import: cran: Fix file descriptor leak.
Fixes <https://bugs.gnu.org/38836>. Reported by Ricardo Wurmus <rekado@elephly.net>. * guix/import/cran.scm (bioconductor-packages-list): Close the port returned by 'http-fetch/cached'. (fetch-description): Likewise.
-rw-r--r-- | guix/import/cran.scm | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/guix/import/cran.scm b/guix/import/cran.scm index f3f1747e43..13771ec598 100644 --- a/guix/import/cran.scm +++ b/guix/import/cran.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net> -;;; Copyright © 2015, 2016, 2017, 2019 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2015, 2016, 2017, 2019, 2020 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> ;;; ;;; This file is part of GNU Guix. @@ -161,7 +161,10 @@ release." ;; alist of attributes. (map (lambda (chunk) (description->alist (string-join chunk "\n"))) - (chunk-lines (read-lines (http-fetch/cached url))))))) + (let* ((port (http-fetch/cached url)) + (lines (read-lines port))) + (close-port port) + (chunk-lines lines)))))) (define* (latest-bioconductor-package-version name #:optional type) "Return the version string corresponding to the latest release of the @@ -206,7 +209,10 @@ from ~s: ~a (~s)~%" (http-get-error-code c) (http-get-error-reason c)) #f)) - (description->alist (read-string (http-fetch url)))))) + (let* ((port (http-fetch url)) + (result (description->alist (read-string port)))) + (close-port port) + result)))) ((bioconductor) ;; Currently, the bioconductor project does not offer a way to access a ;; package's DESCRIPTION file over HTTP, so we determine the version, |