Fri Jul 3 11:50:05 CEST 2009 Tobias Rautenkranz * Fix methods and method-maps bounds. diff -rN -u old-smoke/src/object-map.lisp new-smoke/src/object-map.lisp --- old-smoke/src/object-map.lisp 2014-10-30 08:13:24.000000000 +0100 +++ new-smoke/src/object-map.lisp 2014-10-30 08:13:24.000000000 +0100 @@ -40,7 +40,7 @@ (eval-on-save () (loop for object being the hash-value of *object-map* do - (warn "life object ~A" (class-of object)) + (warn "life object ~A" object) (remove-finalizer object) (setf (slot-value object 'pointer) (null-pointer))) (clrhash *object-map*)) diff -rN -u old-smoke/src/objects/method.lisp new-smoke/src/objects/method.lisp --- old-smoke/src/objects/method.lisp 2014-10-30 08:13:24.000000000 +0100 +++ new-smoke/src/objects/method.lisp 2014-10-30 08:13:24.000000000 +0100 @@ -85,7 +85,7 @@ (optimize (speed 3))) (let ((method (make-smoke-method :smoke smoke :id 0)) (length (smoke-array-length (smoke-module-methods smoke)))) - (loop for id from 1 to length do + (loop for id from 0 below length do ;; exception: methods is < lenght (setf (smoke-method-id method) id) (funcall function method)))) diff -rN -u old-smoke/src/overload-resolution.lisp new-smoke/src/overload-resolution.lisp --- old-smoke/src/overload-resolution.lisp 2014-10-30 08:13:24.000000000 +0100 +++ new-smoke/src/overload-resolution.lisp 2014-10-30 08:13:24.000000000 +0100 @@ -93,7 +93,7 @@ (let* ((start 1) ;; 0 is "no method" (class-id (id class)) (smoke (smoke class)) - (end (smoke-array-length (smoke-module-method-maps smoke)))) + (end (1+ (smoke-array-length (smoke-module-method-maps smoke))))) (declare (type (smoke-index 0) start end)) (loop until (> start end) do (let* ((index (the smoke-index (floor (+ end start) 2)))