								-*-text-*-

This file is intended to collect all known (fixed and unfixed) bugs in
this package.  Features and wishlist items are not listed here, see
the file TODO to find out more about that kind of stuff.

Legend
======

Bug states:
-----------

open      - Filed, but not yet fixed.
fixed     - Bug has been fixed.
closed    - Bug has not been fixed, but does not matter anymore for some
	    reason.
postponed - Bug has been obsoleted for some reason.

Template
========

--8<----cut-here-------------------------------------
Bug:         #<next bug number>
From:	     mgrabmue <mgrabmue@cs.tu-berlin.de>
State:       open
Date:	     <fill in date>
Description: <fill in description>
--8<----cut-here-------------------------------------

Next bug number: 26

Open bugs
=========

Bug:         #25
From:	     mgrabmue <mgrabmue@cs.tu-berlin.de>
State:       open
Date:	     2000-11-09
Description: Under Solaris, the test suite hangs after the test for `uname'.

Bug:         #22
From:	     mgrabmue <mgrabmue@cs.tu-berlin.de>
State:       open
Date:	     2000-10-24
Description: When printing source locations for errors and exceptions, the
	     printing locations are sometimes for including files, not the
	     included.

Bug:         #21
From:	     mgrabmue <mgrabmue@cs.tu-berlin.de>
State:       open
Date:	     2000-10-24
Description: Traced user-define procedures do not correctly print trace
	     exit messages, due to tail recursion.

Bug:         #20
From:	     ela <ela@lkcc.org>
State:       open
Date:	     2000-10-15
Description: garbage collection fails on ia64. that is because `setjmp'
             does not flush register stack, yet.


Non-reproducible bugs
=====================


Closed bugs
===========

Bug:         #17
From:	     mgrabmue <mgrabmue@cs.tu-berlin.de>
State:       fixed (mgrabmue/2000-12-14)
Date:	     2000-05-22
Description: The following code 
	     (letrec ((p (delay (if c 3 (begin (set! c #t) (+ (force p) 1)))))
                      (c #f))
               (force p))
	     should evaluate to 3, not to 4 as it currently does.
	     Update: The above example is from R4RS, Sizzle passes all
	     examples from R5RS without failure.  Maybe this is no bug?
Fix:	     force now checks whether the promise has been forced while
	     evaluating the expression, and only stores the result if it
	     wasn't.

Bug:         #24
From:	     mgrabmue <mgrabmue@cs.tu-berlin.de>
State:       closed (mgrabmue/2000-11-28)
Date:	     2000-10-31
Description: Code such as `,a does not work, because it cannot be spliced
	     into the original pair for `quasiquote'.
Fix:	     This is no bug, the behaviour is correct.

Bug:         #19
From:	     mgrabmue <mgrabmue@cs.tu-berlin.de>
State:       closed (mgrabmue/2000-11-09)
Date:	     2000-06-21
Description: full-fledged call/cc is broken and segfaults.
Fix:	     No fix, but full-fledged call/cc support has been removed,
	     only escape procedures are possible now.

Bug:         #23
From:	     mgrabmue <mgrabmue@cs.tu-berlin.de>
State:       fixed (mgrabmue/2000-10-31)
Date:	     2000-10-26
Description: When using slib, a `(require 'macro)' results in an unbound
	     variable error.
Reason:      Incorrect behaviour of `quasiquote'.  Variables introduced in
	     outer quasiquotes are not visible in inner quasiquotes.
Fix:	     Replaced quasiquotation code.

Bug:         #18
From:	     mgrabmue <mgrabmue@cs.tu-berlin.de>
State:       fixed (mgrabmue/2000-06-01)
Date:	     2000-05-23
Description: When installed with a different $prefix, Sizzle does not
	     find its init file.  I noticed this under Solaris, when I
	     installed Sizzle in my home directory.  The data files
	     end up in ~/share/sizzle, but the load path is set to
	     ~/lib.
Fix:	     Suddenly everything installed and worked fine under Solaris.
	     Strange, but fixed.

Bug:         #14
From:	     mgrabmue <mgrabmue@cs.tu-berlin.de>
State:       buried, because a bug in tspl2d (mgrabmue/2000-05-22)
Date:	     2000-05-17
Description: Consider the following evaluation
	     zzz: (let ((a 1) (b 2))
	       `(,a ,@b))
	       error: argument passed to `unquote-splicing' must evaluate
	       to a proper list
	     Correct behaviour (according to tspl2d)
	     (let ((a 1) (b 2))
	       `(,a ,@b)) => (1 . 2)

Bug:         #15
From:	     mgrabmue <mgrabmue@cs.tu-berlin.de>
State:       fixed (mgrabmue/2000-05-18)
Date:	     2000-05-17
Description: `modulo' does not compute for negative arguments.
Fix:	     Manually adjust result of `%' operation.

Bug:         #16
From:	     raimi <raimi@lkcc.org>
State:       fixed (mgrabmue/2000-05-18)
Date:	     2000-05-18
Description: configure.in checks unnecessarily for c++ compiler.
Fix:	     Removed the check.

Bug:         #13
From:	     mgrabmue <mgrabmue@cs.tu-berlin.de>
State:       fixed (mgrabmue/2000-05-16)
Date:	     2000-05-15
Description: All list functions from SRFI-1 which depend on `receive'
	     are broken.
Fix:	     `car+cdr' was broken, did not work when the cdr was '()
	     because zzz_make_list () was used which terminated on the 
	     first NULL.

Bug:         #12
From:	     raimi <raimi@cs.tu-berlin.de>
State:       fixed (mgrabmue/2000-05-16)
Date:	     2000-05-15
Description: Hash tables are not accessible from the C level.
Fix:	     Added accessors for setting and referencing hash table
values.

Bug:         #10
From:	     mgrabmue <mgrabmue@cs.tu-berlin.de>
State:       fixed (mgrabmue/2000-05-15)
Date:	     2000-05-15
Description: Symbol bindings are lost on garbage collection.
Fix:	     The introduction of `static cell chunks' did not work because
	     cells were marked during the mark phase, but the marks
	     were not removed later on.  Removed the static chunk lists.

Bug:         #7
From:	     raimi <raimi@cs.tu-berlin.de>
State:       fixed (mgrabmue/2000-05-15)
Date:	     2000-05-15
Description: Hash literals allow to enter the same hash key more than
	     once.
Fix:	     Duplicate hash keys are now forbidden and signal an error.

Bug:         #11
From:	     mgrabmue <mgrabmue@cs.tu-berlin.de>
State:       fixed (mgrabmue/2000-05-15)
Date:	     2000-05-15
Description: All `hash*-remove!' primitives should return the removed
	     handle or #f, just as Guile does.
Fix:	     Implemented Guile's behaviour.

Bug:         #8
From:	     raimi <raimi@cs.tu-berlin.de>
State:       fixed (mgrabmue/2000-05-15)
Date:	     2000-05-15
Description: - In der Doku zu hash[qv]? steht am ende 2x 'collected in
               between'.
	     - In der Doku zu zzz_set_arguments sind argv0 und argv
	       falsch beschrieben.  Irgendwo gehlt eine 0.
	     - In den hash-ref funktionen ist die rede von einem
	       default wert. Wo muss man den angeben ?
	     - Die returnwerte der setter funktionen fuer hashes sind
	       nicht dokumentiert. Bei mir kam der gesetzt wert wieder
	       raus. Was kommt bei anderen funktionen raus, die keinen
	       vernuenftigen returnwert haben? Im Zweifel dokumentier
	       sie als 'undifined result'
Fix:	     Fixed documentation.
  
Bug:         #9
From:	     raimi <raimi@cs.tu-berlin.de>
State:       fixed (mgrabmue/2000-05-15)
Date:	     2000-05-15
Description: eqv? sollte auch inhaltsgleiche strings gleich sein
	     lassen. So muss ich bei allen hashes mit der *q funktion
	     arbeiten. Ich vermute, da die auch strukturgleiche werte
	     findet, ist diese funktion etwas groesser/langsamer...
	     Sollte dein R5RS fordern, dass strings nur mit equal?
	     gleich sind, dann schreib in die doku, dass man sich bei
	     stringvergleichen da keinen kopf machen soll, weil es
	     immernoch schnell genug ist...
Fix:         Made documentation clearer.

Bug:         #3
From:	     mgrabmue <mgrabmue@cs.tu-berlin.de>
State:       fixed (mgrabmue/2000-04-24)
Date:	     2000-04-20
Description: When running the expression 
	     ((lambda (x) (x x)) (lambda (x) (x x))), Sizzle leaks
	     memory until virtual memory is exhausted.
	     This also seems to apply to all tail recuring procedure 
	     calls with more than zero arguments.
Fix:	     The reason was integer underflow because cell allocation
	     statistics were not maintained in zzz_cons().

Bug:         #5
From:	     Original report from raimi, generalized by mgrabmue.
State:       fixed (mgrabmue/2000-04-24)
Date:	     2000-04-24
Description: When entering expressions where the only element in a list
	     is a line or block comment, the error message:
	     error: unexpected `)' in input
	     is given.
Fix:	     The reason was wrong logic when reading comments.  Comments
	     only were properly handled when at top level, not inside
	     of list or vector literals. 

Bug:         #4
From:	     mgrabmue <mgrabmue@cs.tu-berlin.de>
State:       fixed (mgrabmue/2000-04-24)
Date:	     2000-04-24
Description: When a scheme file is loaded via (load) from the read-eval-
	     print-loop, error messages are printed two times, once
	     from within load_port() and once from zzz_read_eval_print().
Fix:	     Seperated error reporting from evaluation function.

Bug:         #2
From:	     mgrabmue <mgrabmue@cs.tu-berlin.de>
State:       fixed (mgrabmue/2000-04-21)
Date:	     2000-04-20
Description: Sizzle segfaults when running the r4rstest.scm script in
	     the test directory.
Fix:         When ports got closed multiple times using
	     `close-{,input,output}-port', fclose() was called as many
	     times and segfaulted.

Bug:         #1
From:	     mgrabmue <mgrabmue@cs.tu-berlin.de>
State:       fixed (mgrabmue/2000-04-10)
Date:	     2000-04-10
Description: `sort-list' procedure from sort.scm does not work at all.
	     Seems to try to call its parameter list somehow...
Fix:	     Named let forms were interpreted as normal lets after 
	     momoization.

Bug:         #0
From:	     mgrabmue <mgrabmue@cs.tu-berlin.de>
State:       fixed (mgrabmue/2000-04-07)
Date:	     2000-04-03
Description: `substring' somehow messes up memory management.  After
	     using this function, Sizzle segfaults. 
Fix:	     `substring' wasn't properly null-terminating the newly
	     created string.

Postponed Bugs
==============

Bug:         #6
From:	     mgrabmue <mgrabmue@cs.tu-berlin.de>
State:       postponed (mgrabmue/2000-05-30)
Date:	     2000-04-27
Description: Sizzle segfaults when it is configured with
	     --with-included-gettext and LANG=de is given when invoking
	     the command line interpreter as soon as it tries to print
	     a localized error message.  Seems only to happen in my
	     development directory.  Hmm.  Strange.  Maybe not worth
	     fixing, because depends on my (broken?) development
	     environment.

