guile-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Guile-commits] 03/03: tests: Gracefully handle ENOSYS return for 'setaf


From: Ludovic Courtès
Subject: [Guile-commits] 03/03: tests: Gracefully handle ENOSYS return for 'setaffinity'.
Date: Wed, 04 Mar 2015 08:50:18 +0000

civodul pushed a commit to branch stable-2.0
in repository guile.

commit 3b50be454691f018a235f7473d89bfbf6cfa74f0
Author: Ludovic Courtès <address@hidden>
Date:   Wed Mar 4 09:49:31 2015 +0100

    tests: Gracefully handle ENOSYS return for 'setaffinity'.
    
    Fixes <http://bugs.gnu.org/19646>.
    Reported by John Paul Adrian Glaubitz <address@hidden>.
    
    * test-suite/tests/posix.test ("affinity")["setaffinity"]: Wrap in
      'catch' and throw 'unresolved upon ENOSYS.
---
 test-suite/tests/posix.test |   18 ++++++++++++++----
 1 files changed, 14 insertions(+), 4 deletions(-)

diff --git a/test-suite/tests/posix.test b/test-suite/tests/posix.test
index 9a0e489..f57001a 100644
--- a/test-suite/tests/posix.test
+++ b/test-suite/tests/posix.test
@@ -1,6 +1,7 @@
 ;;;; posix.test --- Test suite for Guile POSIX functions. -*- scheme -*-
 ;;;;
-;;;; Copyright 2003, 2004, 2006, 2007, 2010, 2012 Free Software Foundation, 
Inc.
+;;;; Copyright 2003, 2004, 2006, 2007, 2010, 2012,
+;;;;   2015 Free Software Foundation, Inc.
 ;;;;
 ;;;; This library is free software; you can redistribute it and/or
 ;;;; modify it under the terms of the GNU Lesser General Public
@@ -195,9 +196,18 @@
 
   (pass-if "setaffinity"
     (if (and (defined? 'setaffinity) (defined? 'getaffinity))
-        (let ((mask (getaffinity (getpid))))
-          (setaffinity (getpid) mask)
-          (equal? mask (getaffinity (getpid))))
+        (catch 'system-error
+          (lambda ()
+            (let ((mask (getaffinity (getpid))))
+              (setaffinity (getpid) mask)
+              (equal? mask (getaffinity (getpid)))))
+          (lambda args
+            ;; On some platforms such as sh4-linux-gnu, 'setaffinity'
+            ;; returns ENOSYS.
+            (let ((errno (system-error-errno args)))
+              (if (= errno ENOSYS)
+                  (throw 'unresolved)
+                  (apply throw args)))))
         (throw 'unresolved))))
 
 ;;



reply via email to

[Prev in Thread] Current Thread [Next in Thread]