---- 0.6-1 Dictionary comparison was returning true if and only if the key lists were different but the value lists were equivalent, e.g. #[] == #[] ==> 0 #[[1, 2]] == #[[1, 2]] ==> 0 #[[1, 2]] == #[[3, 2]] ==> 1 #[[1, 2]] == #[[3, 4]] ==> 0 Fixed in 0.7; problem was caused by a simple logic error in dict_cmp(). ---- 0.6-2 Frob comparison was wrong because of the above dictionary comparison problem, and it was also inversed, so you'd get: $lock$[] == $lock$[] ==> 1 $lock$[[1, 2]] == $lock$[] ==> 1 $lock$[[1, 2]] == $lock$[[1, 2]] ==> 1 $lock$[[1, 2]] == $lock$[[3, 4]] ==> 1 $lock$[[1, 2]] == $lock$[[3, 2]] ==> 0 Fixed in 0.7; problem was caused by a simple logic error in data_cmp(). ---- 0.7-1 Starting the program with no binary database results in a panic loading the dbm database file. Reported by mentor@io.com. 11/7/93: I can't reproduce this under Ultrix on a local file system; following up to mentor. ---- 0.7-2 size() appears to return 7 bytes larger each time you call it, if you call it through a method. Reported by Jordan Baker. 11/7/93: Fixed in 0.7.1; problem was caused by object_discard_ident() in object.c setting .id to 1 instead of -1 when the refcount hits zero. ---- 0.7-3 Output buffer is not flushed on a disconnect. Reported by Jordan. 11/6/93: Fixed in 0.7.1 by adding a few conditionals to io.c and net.c. ---- 0.7-4 The periodic dump done by the Cold World database crashes the server (leaving a truncated dump), reportedly after just digging two rooms. Reported by gregb@amber.ecst.csuchico.edu, running Coldmud under Linux. 11/7/93: I think this was caused by 0.7-6 below, which has been fixed. Following up to gregb to see if the new code solves his problem. 11/11/93: I'm pretty sure this was the same as 0.7-6. --- 0.7-5 11/6/93: Including <sys/file.h> in db.c (a _POSIX_SOURCE'd file) causes trouble on some systems. Reported by gregb@amber.ecst.csuchico.edu, while trying to compile Coldmud on a Univel SysVr4 system. 11/6/93: Fixed in 0.7.1 by removing the #include. --- 0.7-6 11/7/93: Possibly related to 0.7-4: traversals of the ndbm database dump core under Linux. Probable cause: the gdbm-based ndbm routines only allocate just enough space for the identifier, so loc_first() and loc_next() corrupt memory while null-terminating the string. 11/7/93: Fixed in 0.7.1 by using the string with its null-terminator as the key. --- 0.7-7 11/10/93: NEXTSTEP 3.1 compile: adminop.c fails because pid_t is undefined. loc.c fails because S_IRUSR and S_IWUSR are undefined. net.c fails because FD_CLOEXEC is undefined. Fails at link time, not finding waitpid(), sigemptyset, or sigaction. 11/10/93: Compile-time problems fixed in 0.7.1: In adminop.c, I forgot to define _POSIX_SOURCE. In loc.c, I put in an #ifdef S_IRUSR, and used typical Unix constants if it's not defined. In net.c, I wrapped the FD_CLOEXEC code in an #ifdef FD_CLOEXEC; this isn't optimal, but it'll do. 11/11/93: Link-time problems fixed with code replacements documented in README file in source directory. --- 0.7-8 11/11/93: The line matches = matches + [[this(), template, fields, @info]]; reportedly decompiles into matches = matches + [[this(), template, fields, @@info]]; It also doesn't work right. Reported by stewarta@netcom.com. 11/11/93: Fixed in 0.7.1: the problem was that codegen.c was doing SPLICE_ADD optimization for splices at the *end* of a list, instead of the beginning. --- 0.7-9 11/11/93: Line numbers in tracebacks are reportedly wrong from time to time. Reported by stewarta@netcom.com. 11/11/93: Following up to stewarta for a more specific example. 11/11/93: Specific case: catch any { } with handler { // line 3 // line 4 // line 5 } this().error("line 7"); 11/11/93: Fixed in 0.7.1: Catch handler in count_lines was using end instead of body_end in a couple of places, and it was also falling through into the next case. --- 0.7-10 11/11/93: Destroying an object doesn't remove it from the children list of its parents. Reported by brandon@cc.usu.edu. 11/11/93: Can't reproduce this; following up to brandon. --- 0.7-11 11/11/93: The following method produces an error: var x; for x in ([1, 2, 3]) union([], []); ERROR: Domain (1) is not a list or dictionary. Thrown by interpreter opcode FOR_LIST. Reported by stewarta@netcom.com. 11/11/93: Fixed in 0.7.1; the short-circuit on the second argument being empty in op_union() wasn't popping the second argument. In fact, that was a pretty silly short-circuit to have in the first place. --- 0.7.1-1 11/13/93: .foo() decompiles into this().foo(). 11/13/93: Fixed in 0.8; is_this() in decode.c was checking expr->u.args instead of expr->u.function.args. --- 0.7.1-2 11/13/93: An object with parents [$programmer, $root] can't find methods on $command_handling. Reported by brandon@cc.usu.edu. 11/13/93: Fixed in 0.8; search_object() in object.c was referring to parents->el[0] instead of parents->el[i] when looping over the parents of the object being searched. --- 0.7.1-3 11/13/93: Connection objects hang around when they're not supposed to. Reported by brandon@cc.usu.edu. 11/15/93: Can't reproduce this in any of the three cases in which connection objects are destroyed; following up to coldstuff. I think this is a database bug. --- 0.8-1 11/15/93: chparents(), destroy(), conn_assign() leak stack frames. Reported by brandon@cc.usu.edu. 11/15/93: Fixed in 0.8.1. --- 0.8-2 11/19/93: Reading in frobs from text dump fails. Reported by gregb@amber.ecst.csuchico.edu. 11/19/93: Fixed in 0.8.1. I forgot to assign the dict field in the frob structure in data_from_literal() in data.c. --- 0.8.1-1 11/21/93: pad() can easily crash the server by specifying a large length. Reported by quinn@dus.mountain.net. --- 0.8.1-2 11/21/93: shutdown() doesn't flush output buffers. Reported by Jordan. --- 0.8.1-3 11/21/93: has_ancestor() fails in the case of, say, ;has_ancestor($player). Reported by Jordan. 11/21/93: Fixed in 0.9, recursive call was checking (dbref, ancestor) instead of (parent dbref, ancestor). Also, it wasn't checking for dbref == ancestor in initial case. --- 0.8.1-4 11/22/93: Objects' search fields are uninitialized, and so is the initial bitmap. Reported by dougo@pure.com, using Purify. 11/22/93: Fixed in 0.9, added initialization for search fields in object_new() and for bitmap in db.c. --- 0.8.1-5 11/22/93: Memory leaks in text dump reader and other places. Reported by dougo@pure.com, using Purify on the regression tests. 11/22/93: In 0.9, eliminated memory leaks in text_dump_get_method() (forgot to discard code list) and in object_free (forgot to discard identifiers). Should follow up to dougo to retry Purify. 11/23/93: Followed up to dougo; there was one remaining memory leak, traced to text_dump_read(), which was forgetting to discard the methods it added to objects.