~ chicken-core (chicken-5) 03a2a84090ebf759960caf612de0e7ea043b7e94


commit 03a2a84090ebf759960caf612de0e7ea043b7e94
Author:     felix <felix@call-with-current-continuation.org>
AuthorDate: Sun Feb 6 17:49:26 2011 +0100
Commit:     felix <felix@call-with-current-continuation.org>
CommitDate: Sun Feb 6 17:49:26 2011 +0100

    use list for storing toplevel commands

diff --git a/csi.scm b/csi.scm
index 022de034..20d0a68a 100644
--- a/csi.scm
+++ b/csi.scm
@@ -269,12 +269,17 @@ EOF
     (lambda ()
       (when (tty-input?) (old)) ) ) )
 
-(define command-table (make-vector 37 '()))
+(define command-table '())
 
 (define (toplevel-command name proc #!optional help)
   (##sys#check-symbol name 'toplevel-command)
   (when help (##sys#check-string help 'toplevel-command))
-  (##sys#hash-table-set! command-table name (cons proc help)) )
+  (cond ((assq name command-table) =>
+	 (lambda (a)
+	   (set-cdr! a (list proc help)) ))
+	(else
+	 (set! command-table (cons (list name proc help) command-table))))
+  (##sys#void))
 
 (set! ##sys#repl-eval-hook
   (let ((eval eval)
@@ -295,9 +300,9 @@ EOF
 	    ((and (pair? form)
 		  (eq? 'unquote (##sys#slot form 0)) )
 	     (let ((cmd (cadr form)))
-	       (cond ((and (symbol? cmd) (##sys#hash-table-ref command-table cmd)) =>
+	       (cond ((assq cmd command-table) =>
 		      (lambda (p)
-			((car p))
+			((cadr p))
 			(##sys#void) ) )
 		     (else
 		      (case cmd
@@ -392,9 +397,9 @@ EOF
  ,g NAME           Get variable NAME from current frame
  ,t EXP            Evaluate form and print elapsed time
  ,x EXP            Pretty print expanded expression EXP\n")
-			 (##sys#hash-table-for-each
-			  (lambda (k v) 
-			    (let ((help (cdr v)))
+			 (for-each
+			  (lambda (a) 
+			    (let ((help (caddr v)))
 			      (if help
 				  (print #\space help)
 				  (print " ," k) ) ) )
Trap