hello Lutz,
The following shows something, which looks like a bug.
Code:
Code: Select all
(new Tree 'Data)
(push '(1 (k_1 "v_1")) Data)
(push '(k_2 "v_2") (assoc 1 Data) -1)
;; -> OK
;;
(pop-assoc '(1 k_2) Data)
Data:Data
;; -> OK
;;
;;
(push '(k_2 "v_2") (assoc 1 Data) -1)
;; -> fails!
;;
;; repair
(push (pop (assoc 1 Data) -1) (assoc 1 Data) -1)
;;
(push '(k_2 "v_2") (assoc 1 Data) -1)
;; -> works again.
Code: Select all
newLISP v.10.5.3 64-bit on Linux IPv4/6 UTF-8, options: newlisp -h
> (new Tree 'Data)
Data
> (push '(1 (k_1 "v_1")) Data)
((1 (k_1 "v_1")))
> (push '(k_2 "v_2") (assoc 1 Data) -1)
(1 (k_1 "v_1") (k_2 "v_2"))
> ;; -> OK
> ;;
> (pop-assoc '(1 k_2) Data)
(k_2 "v_2")
> Data:Data
((1 (k_1 "v_1")))
> ;; -> OK
> ;;
> ;;
> (push '(k_2 "v_2") (assoc 1 Data) -1)
(1 (k_1 "v_1"))
> ;; -> fails!
> ;;
> ;; repair
> (push (pop (assoc 1 Data) -1) (assoc 1 Data) -1)
(1 (k_1 "v_1"))
> ;;
> (push '(k_2 "v_2") (assoc 1 Data) -1)
(1 (k_1 "v_1") (k_2 "v_2"))
> ;; -> works again.
Best regards,
Stephan