mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
[report-utilities] don't use (ice-9 match) until guile-3.0 minimum
(match) has a subtle bug which occurs in guile-2.2 causing this function to mishandle the second 'before-date?' conditional. When guile-3.0 is minimum this commit may be reverted.
This commit is contained in:
parent
dd4b88c386
commit
44b511b3c4
@ -412,24 +412,24 @@
|
|||||||
((date . rest)
|
((date . rest)
|
||||||
(define (before-date? s) (<= (to-date s) date))
|
(define (before-date? s) (<= (to-date s) date))
|
||||||
(define (after-date? s) (< date (to-date s)))
|
(define (after-date? s) (< date (to-date s)))
|
||||||
(match splits
|
(cond
|
||||||
|
|
||||||
;; end of splits, but still has dates. pad with last-result
|
;; end of splits, but still has dates. pad with last-result
|
||||||
;; until end of dates.
|
;; until end of dates.
|
||||||
(() (lp '() rest (cons last-result result) last-result))
|
((null? splits) (lp '() rest (cons last-result result) last-result))
|
||||||
|
|
||||||
;; the next split is still before date.
|
;; the next split is still before date.
|
||||||
((and (_ (? before-date?) . _) (head . tail))
|
((and (pair? (cdr splits)) (before-date? (cadr splits)))
|
||||||
(lp tail dates result (split->elt head)))
|
(lp (cdr splits) dates result (split->elt (car splits))))
|
||||||
|
|
||||||
;; head split after date, accumulate previous result
|
;; head split after date, accumulate previous result
|
||||||
(((? after-date?) . tail)
|
((after-date? (car splits))
|
||||||
(lp splits rest (cons last-result result) last-result))
|
(lp splits rest (cons last-result result) last-result))
|
||||||
|
|
||||||
;; head split before date, next split after date, or end.
|
;; head split before date, next split after date, or end.
|
||||||
((head . tail)
|
(else
|
||||||
(let ((head-result (split->elt head)))
|
(let ((head-result (split->elt (car splits))))
|
||||||
(lp tail rest (cons head-result result) head-result))))))))
|
(lp (cdr splits) rest (cons head-result result) head-result))))))))
|
||||||
|
|
||||||
;; This works similar as above but returns a commodity-collector,
|
;; This works similar as above but returns a commodity-collector,
|
||||||
;; thus takes care of children accounts with different currencies.
|
;; thus takes care of children accounts with different currencies.
|
||||||
|
Loading…
Reference in New Issue
Block a user