On Guile 1.8.1 the following: ;; hurt-me.scm --
(define-module (this) #:use-module (oop goops)) (define-class <a> ()) (define-class <b> (<a>)) (define-method (doit (o <a>) a b) #f) (define-method (doit (o <b>) c d) #f) (define args (list (make <b>) 1 2)) (define p (compute-applicable-methods doit args)) (define the-one-for-b (car p)) (define the-one-for-a (cadr p)) (method-more-specific? the-one-for-b the-one-for-a '()) ;;; end of file segfaults inside METHOD-MORE-SPECIFIC? because, I think, the empty list is not recognised as such. Yeah, maybe the empty list is not what this function expects, but it should not dump on me. [New Thread 16384 (LWP 2231)] Program received signal SIGSEGV, Segmentation fault. [Switching to Thread 16384 (LWP 2231)] 0x4006de10 in more_specificp (m1=0x0, m2=0x0, targs=0x0) at ../../libguile/goops.c:1960 1960 for (l = SCM_SLOT (targs[i], scm_si_cpl); ; l = SCM_CDR(l)) { #0 0x4006de10 in more_specificp (m1=0x0, m2=0x0, targs=0x0) at ../../libguile/goops.c:1960 #1 0x4006e08f in scm_sys_method_more_specific_p (m1=0x4033f050, m2=0x4033f190, targs=0x404) at ../../libguile/goops.c:2342 #2 0x400604de in ceval (x=0x40410468, env=0x40410218) at ../../libguile/eval.c:4126 #3 0x400629c6 in scm_i_eval_x (exp=0x0, env=0x404107c8) at inline.h:250 #4 0x4006356e in scm_primitive_eval_x (exp=0x404107f8) at ../../libguile/eval.c:5906 #5 0x400770d1 in scm_primitive_load (filename=0x403491c0) at ../../libguile/load.c:109 #6 0x400604de in ceval (x=0x404, env=0x40393c58) at ../../libguile/eval.c:4126 #7 0x4006290a in scm_i_eval (exp=0x0, env=0x40393c58) at inline.h:250 #8 0x4004fb92 in scm_start_stack (id=0x404107c8, exp=0x4031e9a8, env=0x40393c58) at ../../libguile/debug.c:454 #9 0x4004fc10 in scm_m_start_stack (exp=0x404107c8, env=0x0) at ../../libguile/debug.c:470 -- Marco Maggi _______________________________________________ Bug-guile mailing list Bug-guile@gnu.org http://lists.gnu.org/mailman/listinfo/bug-guile