Репозиторий Sisyphus
Последнее обновление: 1 октября 2023 | Пакетов: 18631 | Посещений: 37404493
en ru br
Репозитории ALT
S:5.4.3-alt1
5.1: 4.14-alt1.M51.1
4.1: 3.9-alt8.M41.4
4.0: 3.1-alt6
3.0: 2.0-alt0.10.1
www.altlinux.org/Changes

Группа :: Система/Настройка/Прочее
Пакет: alterator

 Главная   Изменения   Спек   Патчи   Sources   Загрузить   Gear   Bugs and FR  Repocop 

Патч: alterator-5.4.1-fix-call-cc-via-shift-for-guile20.patch
Скачать


diff --git a/alterator/interfaces/guile/algo.scm b/alterator/interfaces/guile/algo.scm
index a773183..aadc8df 100644
--- a/alterator/interfaces/guile/algo.scm
+++ b/alterator/interfaces/guile/algo.scm
@@ -155,10 +155,12 @@
 
 ;; Implement call/cc in terms of shift
 (define (call-with-current-continuation p)
-  (let ((st (current-dynamic-state)))
+  (let ((st0 (make-dynamic-state (current-dynamic-state))))
     (shift k
-      (with-dynamic-state st
-        (lambda ()
-          (p k))))))
+      (let ((st1 (make-dynamic-state (current-dynamic-state))))
+	(set-current-dynamic-state st0)
+	(p (lambda (x)
+	     (set-current-dynamic-state st1)
+	     (k x)))))))
 
 (define call/cc call-with-current-continuation)
 
дизайн и разработка: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
текущий майнтейнер: Michael Shigorin