diff options
author | Ludovic Courtes | 2006-07-13 12:34:16 +0000 |
---|---|---|
committer | Ludovic Courtes | 2006-07-13 12:34:16 +0000 |
commit | 9a02dfaefa324ac1e5df3adc11003e1b578cfe64 (patch) | |
tree | 748fe4e06355aa1b04f15236c6a58207ff473caf | |
parent | 5c602ddef86c6bed6d81687c968340f160d0af21 (diff) | |
download | skribilo-9a02dfaefa324ac1e5df3adc11003e1b578cfe64.tar.gz skribilo-9a02dfaefa324ac1e5df3adc11003e1b578cfe64.tar.lz skribilo-9a02dfaefa324ac1e5df3adc11003e1b578cfe64.zip |
Made `parse-list-of' tail-recursive.
* src/guile/skribilo/skribe/api.scm (parse-list-of): Made tail-recursive,
thereby fixing potential stack overflows (e.g., when building the user
manual) and perhaps slightly improving performance.
git-archimport-id: lcourtes@laas.fr--2005-libre/skribilo--devo--1.2--patch-9
-rw-r--r-- | ChangeLog | 15 | ||||
-rw-r--r-- | src/guile/skribilo/skribe/api.scm | 9 |
2 files changed, 20 insertions, 4 deletions
@@ -2,6 +2,21 @@ # arch-tag: automatic-ChangeLog--lcourtes@laas.fr--2005-mobile/skribilo--devel--1.2 # +2006-07-12 16:28:29 GMT Ludovic Courtes <ludovic.courtes@laas.fr> patch-58 + + Summary: + Made `parse-list-of' tail-recursive. + Revision: + skribilo--devel--1.2--patch-58 + + * src/guile/skribilo/skribe/api.scm (parse-list-of): Made tail-recursive, + thereby fixing potential stack overflows (e.g., when building the user + manual) and perhaps slightly improving performance. + + modified files: + ChangeLog src/guile/skribilo/skribe/api.scm + + 2006-04-23 17:28:14 GMT Ludovic Courtes <ludovic.courtes@laas.fr> patch-52 Summary: diff --git a/src/guile/skribilo/skribe/api.scm b/src/guile/skribilo/skribe/api.scm index 2cd8b2e..2a4d0ae 100644 --- a/src/guile/skribilo/skribe/api.scm +++ b/src/guile/skribilo/skribe/api.scm @@ -551,12 +551,13 @@ (null? (cdr lst))) (parse-list-of for markup (car lst))) (else - (let loop ((lst lst)) + (let loop ((lst lst) + (result '())) (cond ((null? lst) - '()) + (reverse! result)) ((pair? (car lst)) - (loop (car lst))) + (loop (car lst) result)) (else (let ((r (car lst))) (if (not (is-markup? r markup)) @@ -567,7 +568,7 @@ (markup-markup r) (find-runtime-type r)) markup))) - (cons r (loop (cdr lst)))))))))) + (loop (cdr lst) (cons r result))))))))) ;*---------------------------------------------------------------------*/ ;* itemize ... */ |