Fix crash on impossible tree movement
This commit is contained in:
parent
00f4935d3b
commit
5c5f7ff1ba
|
@ -121,31 +121,41 @@
|
|||
|
||||
(define (next-node state)
|
||||
(define target (ts-node-next-sibling
|
||||
(sloth-state-point-node state)))
|
||||
(define point (ts-node-start-point target))
|
||||
(move (sloth-state-win state)
|
||||
(car point) (cdr point))
|
||||
(set-sloth-state-point-node state target))
|
||||
(sloth-state-point-node state)
|
||||
#t))
|
||||
(if target
|
||||
(let ((point (ts-node-start-point target)))
|
||||
(move (sloth-state-win state)
|
||||
(car point) (cdr point))
|
||||
(set-sloth-state-point-node state target))
|
||||
state))
|
||||
|
||||
(define (prev-node state)
|
||||
(define target (ts-node-prev-sibling
|
||||
(sloth-state-point-node state)
|
||||
#f))
|
||||
(define point (ts-node-start-point target))
|
||||
(move (sloth-state-win state)
|
||||
(car point) (cdr point))
|
||||
(set-sloth-state-point-node state target))
|
||||
#t))
|
||||
(if target
|
||||
(let ((point (ts-node-start-point target)))
|
||||
(move (sloth-state-win state)
|
||||
(car point) (cdr point))
|
||||
(set-sloth-state-point-node state target))
|
||||
state))
|
||||
|
||||
(define (down-node state)
|
||||
(define target (ts-node-child (sloth-state-point-node state) 0))
|
||||
(define point (ts-node-start-point target))
|
||||
(move (sloth-state-win state)
|
||||
(car point) (cdr point))
|
||||
(set-sloth-state-point-node state target))
|
||||
(define nodes (ts-node-childs (sloth-state-point-node state)
|
||||
#t))
|
||||
(if (not (null? nodes))
|
||||
(let ((point (ts-node-start-point (car nodes))))
|
||||
(move (sloth-state-win state)
|
||||
(car point) (cdr point))
|
||||
(set-sloth-state-point-node state (car nodes)))
|
||||
state))
|
||||
|
||||
(define (up-node state)
|
||||
(define target (ts-node-parent (sloth-state-point-node state)))
|
||||
(define point (ts-node-start-point target))
|
||||
(move (sloth-state-win state)
|
||||
(car point) (cdr point))
|
||||
(set-sloth-state-point-node state target))
|
||||
(if target
|
||||
(let ((point (ts-node-start-point target)))
|
||||
(move (sloth-state-win state)
|
||||
(car point) (cdr point))
|
||||
(set-sloth-state-point-node state target))
|
||||
state))
|
||||
|
|
Loading…
Reference in New Issue