This file lists all changes made to the game driver in all gory detail.
See the file HISTORY for a user-oriented summary of all the changes.
02-Feb-2002 (Lars Duening) (3.2.9-dev.534 == 3.2.9)
- (many files) Some cosmetic cleanup.
26-Jan-2002 (Lars Duening) (3.2.9-dev.533)
- (prolang.y) Corrected a small bug in the code generation for
operators &&= and ||=.
26-Jan-2002 (Lars Duening) (3.2.9-dev.532)
- (prolang.y) One more detail to the compilation problem (reported
by Freaky).
26-Jan-2002 (Lars Duening) (3.2.9-dev.531)
- (prolang.y) Removed a compilation problem (reported by Freaky).
26-Jan-2002 (Lars Duening) (3.2.9-dev.530)
- (prolang.y) Removed a compilation problem.
25-Jan-2002 (Lars Duening) (3.2.9-dev.529)
- (object.c) Corrected a compilation problem (reported by Joseph).
- (prolang.y, interpret.c, func_spec) Implemented short-circuit evaluation
for the operators '&&=' and '||='.
24-Jan-2002 (Lars Duening) (3.2.9-dev.528)
- (lex) type #pragmas set in an auto-include were reset at the end of
it (reported by Gnomi).
24-Jan-2002 (Lars Duening) (3.2.9-dev.527)
- (object.c) save/restore didn't look out for shared closures.
22-Jan-2002 (Lars Duening) (3.2.9-dev.526)
- (etc/lpc.xml) LPC syntax highlighting for KDE's kate (thanks, Menaures!)
19-Jan-2002 (Lars Duening) (3.2.9-dev.525)
- (interpret.c) Changed the error thrown by replace_program()
to a mere debug message.
19-Jan-2002 (Lars Duening) (3.2.9-dev.524)
- (interpret.c) Restricted replace_program() on the first inherited
program if that program has virtually inherited variables.
See b-030119 for an explanation.
16-Jan-2002 (Lars Duening) (3.2.9-dev.523)
- (prolang.y) When redefining a function, the redefinition can now
have more arguments than the original.
- (lex.c) Escaping newlines in #if conditions on Windows didn't
work (reported by Zonk)
14-Jan-2002 (Lars Duening) (3.2.9-dev.522)
- (several files) Removed no longer used diagnostic code.
07-Jan-2002 (Lars Duening) (3.2.9-dev.521)
- (several files) Removed the 'no-blueprint' configuration option: there
code is stable.
05-Jan-2002 (Lars Duening) (3.2.9-dev.520)
- (make_func.y) When creating type/hookmaps in prolang.y, the linecounting
didn't count the map's continuation lines.
- (interpret.c) string lvalue indices can no longer index past the end
of the string.
- (interpret.c) Removed a couple sanity checks which are no longer needed.
20-Dec-2002 (Lars Duening) (3.2.9-dev.519)
- (lex.c) Added a workaround for an optimizer bug in Cygwin 3.2 (reported
by Zonk).
20-Dec-2002 (Lars Duening) (3.2.9-dev.518)
- (actions.c) Throw an error if H_NOTIFY_FAIL hook is missing. This also
prevents the driver from crashing if the H_SEND_NOTIFY hook is
defined (reported by Zonk).
18-Dec-2002 (Lars Duening) (3.2.9-dev.517)
- (object.c) When calling privilege_violation() for restoring efuns,
the current object is passed as 'who' argument (suggested by Gnomi).
- (object.c) When saving lfuns, I accidentally deleted the lookup
for inherited lfuns (reported by Gnomi).
17-Dec-2002 (Lars Duening) (3.2.9-dev.516)
- (object.c) restore_svalue() did not check if a restored efun was
overriden by a nomask simul-efun (reported by Gnomi).
- (comm.c) With pthreads, the driver could crash in remove_interactive()
when the write_cond was destroyed while the thread was still
waiting on it (reported by Lee).
16-Dec-2002 (Lars Duening) (3.2.9-dev.515)
- (object.c) restore_map_size() stumbled over closure entries (reported by
Jason).
16-Dec-2002 (Lars Duening) (3.2.9-dev.514)
- (comm.c) If the login object destructed itself in the logon() call,
the driver crashed in the print_prompt() routine (reported by Jason).
15-Dec-2002 (Lars Duening) (3.2.9-dev.513)
- (object.c) Corrected a compilation error (thanks, Dafire and Jason!).
15-Dec-2002 (Lars Duening) (3.2.9-dev.512)
- (prolang.y) It is no longer possible to defined a variable to be
of type 'void' (reported by Gnomi).
14-Dec-2002 (Lars Duening) (3.2.9-dev.511)
- (object.c) Small corrections.
14-Dec-2002 (Lars Duening) (3.2.9-dev.510)
- (object.c) Efuns save_() and restore_() can now handle non-lambda
closures, symbols and quoted arrays. This required a new savefile
format, though.
11-Dec-2002 (Lars Duening) (3.2.9-dev.509)
- (doc/concepts/negotiation, src/wk/) Added some telnet protocol
related documentation.
- (func_spec, lex.c, prolang.y, interpret.c) New operators '&&=' and
'||=' (suggested by Croft).
09-Dec-2002 (Lars Duening) (3.2.9-dev.508)
- (mudlib/telnetneg.c) Updated (thanks, Fiona!)
- (mudlib/test_master.c) Added testcode for using charmode (thanks, Fiona!)
- (comm) Fiona provided more patches: SAVE_NOECHO, which makes sure that
the client can switch to CHARMODE before also setting NOECHO; and
SIMULATE_CHARMODE which allows the mudlib to switch to charmode even
if the client can do only linemode.
- (simulate.c) Efuns copy_file() and rename() no longer throw errors
on failures, but just return a non-0 value (reported by Menaures).
05-Dec-2002 (Lars Duening) (3.2.9-dev.507)
- (config.h, comm, gcollect.c, main.c) Replaced USE_PTHREAD by USE_PTHREADS.
- (comm.c) Before printing the prompt, current_object is set to NULL
so that the player's catch_tell() is sure to be able to see the
prompt (reported by mudder@Furtual.ORG).
04-Dec-2002 (Lars Duening) (3.2.9-dev.506)
- (make_func.y, comm.c, main.c, prolang.y) Removed warnings (reported by
Coogan).
- (comm.c) When logging on a new player, the prompt wasn't printed - in
particular the prompt set by input_to(INPUT_PROMPT) (reported by
Nostradamus).
- (main.c) If the reserved areas can be reallocated, the out_of_memory
flag is reset.
- (simulate.c) catch() reports an 'out_of_memory' condition only
if it was raised during the execution of the guarded code.
03-Dec-2002 (Lars Duening) (3.2.9-dev.505)
- (patch-o-matic) Updated to new executable name.
- (prolang.y, array.c) The filenames returned by include_list()
now always start with a '/' to make their reuse in include statements
simpler (suggested by Coogan).
- (mudlib/telnet) Fiona donated the telnet negotiations module from
Wunderland, containing a complete implementation of the telnet protocol
(thanks!).
- (sprintf.c) The %O/%Q formatter stumbled over really large arrays
and mappings: the top-level function ignored if the conversion
routine reallocated the string buffer (reported by Bardioc).
03-Dec-2002 (Lars Duening) (3.2.9-dev.504)
- (Makefile.in) Corrected two typos.
03-Dec-2002 (Lars Duening) (3.2.9-dev.503)
- (main.c) Forgot to add the configurable efuns to the '--options'
output.
02-Dec-2002 (Lars Duening) (3.2.9-dev.502)
- (func_spec, interpret.c) Efun member_array() is now deactivated
with !USE_DEPRECATED (suggested by Fiona).
- (configure, config.h, efuns, simulate, object, interpret.c): The
efuns set_light(), set_is_wizard() and process_string() can be
configured from the configure script.
- (Makefile) Driver executable renamed from 'driver' to 'ldmud'.
- (configure, Makefile) The configure script now tries to figure out
on its own which warning options the compiler supports.
30-Nov-2002 (Lars Duening) (3.2.9-dev.501)
- (comm.c) Accidentally deleted two lines in the noecho handling.
30-Nov-2002 (Lars Duening) (3.2.9-dev.500)
- (comm.c) Fiona provided a number of bugfixes for CHARMODE - thanks!
30-Nov-2002 (Lars Duening) (3.2.9-dev.499)
- (prolang.y) Brainfart: the last patch created a problem, instead of
solving one. The bug was that "*"::fun() looked at _all_ inherited
programs, not just the directly inherited ones.
30-Nov-2002 (Lars Duening) (3.2.9-dev.498)
- (prolang.y) When making wildcarded supercalls ("*"::fun()), the compiler
takes care that each function is called only once (reported by Gnomi).
29-Nov-2002 (Lars Duening) (3.2.9-dev.497)
- (sysmalloc.c) This file is no longer needed (actually it has been
useless since 3.2.8-dev.188).
- (lex.c) pragma_combine_strings was never initialised with a default.
- (lex.c) Changed the FLOAT_MIN/FLOAT_MAX predefined to reflect
the C-float limits, not the C-double limits, as the gamedriver's
floats are somewhere inbetween the two.
27-Nov-2002 (Lars Duening) (3.2.9-dev.496)
- (patchlevel.h, hosts/be/Makefile, hosts/be/set-version) The version
flags of the BeOS executable are now read from patchlevel.h and not set
directly in the BeOS Makefile.
27-Nov-2002 (Lars Duening) (3.2.9-dev.495)
- (efuns.c) Efun transfer() was still incorrect. Funny though that
nobody noticed it before :-) (reported by Nostradamus).
27-Nov-2002 (Lars Duening) (3.2.9-dev.494)
- (comm.c) The correction of the threads racing condition unfortunately
introduced a deadlock - Gawain found and fixed it (thanks!).
27-Nov-2002 (Lars Duening) (3.2.9-dev.493)
- (efuns.c) Corrected the deprecated efun transfer(): the check
for dest->can_put_and_get() was implemented wrong (reported by
Nostradamus).
27-Nov-2002 (Lars Duening) (3.2.9-dev.492)
- (comm.c) The thread-cleanup function now locks the structure before
performing the cleanup (suggested by Gawain).
26-Nov-2002 (Lars Duening)
- (object.c) restore_object("#0:0") caught the driver in an endless loop
(thanks, Ctx!).
22-Nov-2002 (Lars Duening)
- (prolang.y, interpret.c) The __INIT code is no longer restricted to
the first 64K of generated bytecode.
21-Nov-2002 (Lars Duening)
- (etc/patch-o-matic) Contributed by Guandalug - thanks!
20-Nov-2002 (Lars Duening) (3.2.9-dev.491)
- (closure.c, interpret.c) Corrected refcount errors in the handling
of soon-to-be dangling alien-lfun closures.
- (smalloc.c) Made sure that before each call to fatal() the thread-check
is reset.
19-Nov-2002 (Lars Duening) (3.2.9-dev.490)
- (closure.c, interpret.c) In order to convert a dangling lfun closure
during a replace_program() into a dangling alien-lfun closure, the
closure needs to be created as alien-lfun in the first place (reported
by Pulami).
17-Nov-2002 (Lars Duening) (3.2.9-dev.489)
- (many files) Pure source cosmetics: removed trailing spaces at lineends.
16-Nov-2002 (Lars Duening) (3.2.9-dev.488)
- (smalloc.c) If the allocator ran out of memory, the exit handling
triggered the 'Multiple threads' safety check. Not really a problem,
as the driver would exit anyway, but it obscures what is happening.
15-Nov-2002 (Lars Duening) (3.2.9-dev.487)
- (comm.c) The call to remove_flush_entry() could clobber the list
of players to flush if it was called for a player not in the
flush list.
13-Nov-2002 (Lars Duening) (3.2.9-dev.486)
- (interpret.c) get_type_info(,2) on an unbound-lambda crashed the driver
because an uninitialized variable was used (thanks, Ctx!)
- (simulate.c) If the H_NOECHO hook is set, the telnet negotiations
are redirected only after the hook setting is verified (thanks,
Fiona!)
- (comm.c) Corrected a potential problem when an interactive object
with pending data is forcefully made non-interactive: from my
reading of the code it seems that the object remained in the
list of players-to-flush, even though it no longer had a valid
interactive_t attribute.
12-Nov-2002 (Lars Duening) (3.2.9-dev.485)
- (port.h) The 'malloc' attribute is now used only with gcc 3 or newer.
- (lex.c) Corrected the line counting with auto-includes (reported by
Coogan).
11-Nov-2002 (Lars Duening) (3.2.9-dev.484)
- (comm.c) When calling H_NOECHO, the code did not check if the
argument objects were still alive (reported by Fiona).
08-Nov-2002 (Lars Duening)
- (port.h, comm.c, xalloc.h, smalloc.h) Activated GCC attributes for
OS-X compilations, added GCC attribute 'malloc' to the allocator
functions, removed some warnings.
07-Nov-2002 (Lars Duening) (3.2.9-dev.483)
- (configure.in) The tests regarding which libraries are needed suffered
from a disabling typo (reported by Nostradamus).
- (port.h, hosts/unix.h) Adapted to the latest Cygwin release.
06-Nov-2002 (Lars Duening) (3.2.9-dev.482)
- (closure.c) If a lfun-closure is left danging by a replace_program(),
it is now converted into an alien-lfun closure pointing to
master::dangling_lfun_closure(). This way the error handler has
a chance to determine the originating object (suggested by Gnomi).
- (closure.c) The handling of dangling alien-lfun closures actually
destroyed the alien.ob entry.
- (interpret.c) allocate() used with an array or mapping initialisation
value now creates shallow copies of the initialisation value for each
initialised element (suggested by Oskar).
04-Nov-2002 (Lars Duening) (3.2.9-dev.481)
- (smalloc.c) The thread-check in xfree() also triggered when the
memory reserves were released (reported by Bardioc).
03-Nov-2002 (Lars Duening)
- (configure.in) Made the check for -lpthread more robust (reported by
Markus Peter).
03-Nov-2002 (Lars Duening)
- (configure.in) Made the check for -lpthread more robust (reported by
Markus Peter).
01-Nov-2002 (Lars Duening) (3.2.9-dev.480)
- (comm.c) *blush* Deleted TELOPT_EOR handling by act of stupidity..
31-Oct-2002 (Lars Duening) (3.2.9-dev.478, -dev.479)
- (comm.c) Added TELOPT_BINARY to the telnet negotiations forwarded
to H_TELNET_NEG (suggested by Fiona).
30-Oct-2002 (Lars Duening) (3.2.9-dev.477)
- (lex.c) When starting a new compile, the order of initialisations
was wrong (in particular: auto-include was handled before the
lexer was set up) (reported by Freaky).
- (configure, (x)erq/Makefile.in) Only link in libraries actually
needed by the erq (suggested by Freaky).
- (configure) Modified the configure so that only required libraries
are added to the compile (suggested by Freaky).
29-Oct-2002 (Lars Duening) (3.2.9-dev.476)
- (comm, func_spec) find_input_to() and remove_input_to() can now
match on both object and string name.
- (interpret.c) unquote(symbol) added a quote level instead of
removing it (reported by Gnomi).
- (comm.c) Improved the 'already bound' error messages to list
the port number.
- (util/xerq) If the xerq couldn't send all data from a ERQ_SEND request
immediately and thus returned a ERQ_E_INCOMPLETE, it will follow it
up with a ERQ_OK message to the same handle later once all the pending
data has been send (provided by Fiona, thanks!)
- (util/xerq/lpc) Replaced the socketd with the Wunderland daemon
(thanks!).
- (lex.c, prolang, simulate.c) auto-includes are now handled like
normal includes (instead of just placing the text into the textbuffer
and fudging the current_line variable), correcting a source of false
linenumber informations.
27-Oct-2002 (Lars Duening) (3.2.9-dev.474, .475)
- (smalloc.c) Added a very primitive safeguard against interleaving
calls to the allocator - I suspect that this is the root cause
for the problems with pthreads.
- (object.c) When resetting an object, the previous_object() was
some random object (reported by Gnomi).
- (comm, func_spec) New efuns find_input_to() and input_to_info()
(suggested by Fiona).
16-Oct-2002 (Lars Duening) (3.2.9-dev.473)
- (configure) Some systems need libresolv in order to provide
herror() (reported by Coogan).
- (comm.c) Removed a compile warning (thanks, Fiona!).
- (array.c) regexplode: Removed a memory leak on stack overflow
(thanks, Fiona!).
15-Oct-2002 (Lars Duening) (3.2.9-dev.472)
- (exec.h, lex.c, prolang, object, gcollect.c, typedefs.h) Added
complete include file information to compiled programs (backported
from 3.3).
- (object.c) Implemented efun include_list() properly (backported
from 3.3).
- (prolang.y) Adapted to bison 1.5 .
14-Oct-2002 (Lars Duening)
- (configure) If a requested option (like use-mysql) can't be used
because the system lacks the necessary support, the configure
script issues a warning and exits with return code 1 (suggested
by Freaky).
13-Oct-2002 (Lars Duening) (3.2.9-dev.471)
- (prolang.y) Removed a compiler warning.
- (configure.in) The test for pthread support was broken, and
the test for 'long long' was run twice. And if pthreads
are not found, USE_PTHREADS is now deactivated (reported by Freaky).
10-Oct-2002 (Lars Duening) (3.2.9-dev.470)
- (efuns.c, svalue.h, interpret.c) Evaluation cost of deep_copy() is
now proportional to size and nesting depth of copied arrays
and mappings, if DYNAMIC_COST is defined (suggested by Gnomi).
09-Oct-2002 (Lars Duening) (3.2.9-dev.469)
- (port.h, swap.c) No longer includes <values.h> which has been obsoleted
by <limits.h> and <float.h>.
- (config.h, driver.h) Removed the compilation warning when YYDEBUG
was not defined.
- (mud/lp-245) Corrected the transfer() simul-efun (thanks, Ralph!)
09-Oct-2002 (Lars Duening) (3.2.9-dev.467, .468)
- (lex.c, prolang) Implemented #'inh::fun lfun closures (b-010801-0).
07-Oct-2002 (Lars Duening) (3.2.9-dev.466)
- (comm.c) Removed compilation problems with BeOS.
- (prolang.y) Oh My Ghod. The range index [..<expr0>] created faulty
bytecode, maybe even clobbered random memory, if the expression
was anything complicated, like 'm++' or 'm = 4'. This bug
was caused by uninitialized the LPC parser not initializing
the internal return value from parsing <expr0>, so the bug
didn't manifest itself every time (reported by Zonk).
04-Oct-2002 (Lars Duening) (3.2.9-dev.465)
- (autoconf/configure.in) Corrected the problem with newer autoconfs.
01-Oct-2002 (Lars Duening) (3.2.9-dev.464)
- (comm.c) Forgot a parameter in an error message (thanks, Freaky!)
- (main.c, comm) The hostname was initialized to late, so the debug.log
file was opened with the wrong name (reported by Dafire).
30-Sep-2002 (Lars Duening) (3.2.9-dev.463)
- (comm.c) Changed the fprintf() in the thread cleanup routine into a
malloc-friendlier dprintf1().
- (main.c) Added a check into debug_message() if the name of the
debug log file has already been set (reported by Dafire).
- (simulate.c) The driver now checks if an object to be loaded appears
out of nowhere while it is being compiled (this can happen if the mudlib
warning handler is careless with rename_object()) and throws an error
(reported by Gnomi).
- (main.c, comm) New commandline options --hostname and --hostaddr
to override the values returned by the system. In particular,
--hostaddr will be used as the address to open to the driver
ports.
28-Sep-2002 (Lars Duening)
- (config.h.in) USE_PTHREAD was permanently commented out (reported by
Gawain).
27-Sep-2002 (Lars Duening) (3.2.9-dev.461+.462)
- (comm, main.c, configure) Based on a patch by Gawain, PTHREADS and
PCRE (requires Fiona's patch) can now be configured like other
options. New commandline option --max-thread-pending to set
the limit for pending data to write.
25-Sep-2002 (Lars Duening)
- (comm.c) If a connection is marked for removal (.do_close != 0),
telnet commands can still be sent. This is to allow the input_to()
handling to properly reset the connection to linemode even if
the input_to() handler has called remove_interactive().
- (backend, interpret.c, smalloc.c) Made the GC request log output
nicer.
25-Sep-2002 (Lars Duening) (3.2.9-dev.460)
- (comm, gcollect.c) Removed compiler warnings, and a crash
in pthreads thread cleanup (reported by Dafire)
25-Sep-2002 (Lars Duening) (3.2.9-dev.459)
- (interpret.c) The LPC tracing code crashed when used with lambda
closures or with call_resolved() (reported by Nostradamus).
24-Sep-2002 (Lars Duening) (3.2.9-dev.458)
- (comm, backend.c, gcollect.c) smalloc is not threadsafe, which
caused the implementation of USE_PTHREAD code to trash the
memory structures. To solve the problem, all memory allocations
and deallocations are done by the main thread.
Patches from Guandalug:
- (interpret.c) Converting a sefun-closure to a string looked up the
name in the efun table instead of the sefun table.
20-Sep-2002 (Lars Duening) (3.2.9-dev.457)
- (prolang.y) The test for duplicate toplevel inherits got confused
when virtual inherits occured (reported by Zonk via Dafire).
19-Sep-2002 (Lars Duening)
- (etc/lpc-mode.el) LPC mode for EMACS, by Vivek Dasmohapatra.
17-Sep-2002 (Lars Duening)
- (comm.c) ECONNREFUSED is recognized as error (suggested by Coogan).
16-Sep-2002 (Lars Duening)
- (comm.c) With PThreads: forgot to detach new threads after creation
(thanks, Gawain!)
- (configure) The object statistic seems to be correct now, so the
OSTAT diagnostics are disabled by default.
15-Sep-2002 (Lars Duening) (3.2.9-dev.456)
- (simulate) Both 'warn' and 'warning' are already symbols on
some systems, so I now used 'warnf' as name of the warning
function.
- (regexp, rxcache, array.c, backend.c, ed.c) Removed name clashes
with system libraries.
15-Sep-2002 (Lars Duening) (3.2.9-dev.455)
- (prolang.y, lex, interpret.c, simulate, func_spec) New pragma
'warn_deprecated' causes the compiler to print warnings when
a deprecated efun is used (suggested by Dafire).
03-Sep-2002 (Lars Duening) (3.2.9-dev.454)
- (swap.c) The object statistics get messed up when the GC swaps objects.
Let's see if this change corrects all of the discrepancies. In
general the reason for the discrepancies was that variables
were counted more often as 'swapped in' than they had been
swapped out.
30-Aug-2002 (Lars Duening) (3.2.9-dev.453)
- (efuns.c, lex.c, make_func.y) Some chars were casted to 'unsigned int'
instead of 'unsigned char', breaking support for international
character sets (thanks, Oskar!).
26-Aug-2002 (Lars Duening)
- (swap.c) The OSTAT diagnostic for swap-in subtracted instead of added
to compute the expected new tot_alloc_object_size value (reported
by Coogan).
21-Aug-2002 (Lars Duening)
- (object.c) Oops, omitted one argument in one of the OSTAT outputs.
21-Aug-2002 (Lars Duening) (3.2.9-dev.452)
- (comm.c, object.c, simulate.c, swap.c) Corrected some warnings
(reported by Dafire).
- (interpret, and some more files) Master applies caused by external events
(like ERQ messages) are now distinguished from internal calls
(like valid_write()) so that the error handling for external calls
receive the full eval cost benefits (suggested by Fiona).
- (Makefile.in s): Added missing @EXEEXT@ tags.
20-Aug-2002 (Lars Duening) (3.2.9-dev.451)
- (main.c) Needed to #include <netdb.h> on Solaris to get the
MAXHOSTNAMELEN macro (thanks, Coogan).
- (util/erq/erq.c, util/xerq/erq.c) Forgot the timestamp in the
initial startup message.
- (port, simulate.c, comm.c, hosts/unix.h) Cygwin corrections.
- (config.h, configure, driver.h, erqs) New configuration option
with-erq-debug sets the new config.h macro ERQ_DEBUG which
defines the ERQ debug level. No more '-DDEBUG' to enable
the debugging code in the ERQs (suggested by Bill).
19-Aug-2002 (Lars Duening) (3.2.9-dev.450)
- (closure.c) Efun symbol_efun() freed symbol-svalues as strings
(reported by Dafire).
19-Aug-2002 (Lars Duening) (3.2.9-dev.449)
- (lex.c) An error in a permanent define given on the command line
would crash the driver because the lexer called error() before
the VM had been set up.
- (Makefile.in) Some makes don't like ':=' variable assignments (reported
by Coogan).
- (main.c) If the driver uses the default debug.log file, its (mudlib)
name is available in the predefined macro __DEBUG_LOG__ (suggested
by Mandragon).
- (driver.h, config.h) Made the config.h macro DEBUG invisible to the
ERQs as their debugging mode is controlled by their Makefiles.
- (util/erq/erq.c, util/xerq/erq.c) The ERQs now print their name
and compilation date to stderr on startup.
18-Aug-2002 (Lars Duening) (3.2.9-dev.448)
- (lex.c) Added predefined macros __RESET_TIME__ and __CLEANUP_TIME__
(suggested by Elric).
14-Aug-2002 (Lars Duening)
- (configure) Optimization option -funroll-all-loops seems to
create buggy code, so I removed it from the configure.
14-Aug-2002 (Lars Duening) (3.2.9-dev.447)
- (comm.c) Compilation broke under BeOS.
- (object.c, swap.c, simulate.c) Removed warnings.
- (Makefile.in) Removed a GNUMake'ism (reported by Coogan).
13-Aug-2002 (Lars Duening) (3.2.9-dev.446)
- (configure) The VERBOSE_OPCPROF define in config.h got clobbered.
- (interpret.c) I removed the copy-on-write for mappings again -
it broke more than it fixed.
12-Aug-2002 (Lars Duening) (3.2.9-dev.445)
- (lex.c) New predefined macros __CATCH_EVAL_COST__ and
__MASTER_EVAL_COST__ to carry the corresponding
configuration options over to LPC (suggested by Menaures).
- (Makefiles, configure, config.h) Moved the debugging options into
config.h to ensure clean recompilations, and made them
configurable through the normal configure mechanism.
11-Aug-2002 (Lars Duening)
- (driver.h, object.c, simulate.c, swap.c) Defining debug macro
CHECK_OBJECT_STAT allows tracing of all changes to the
tot_alloc_object(_size) statistics. Aim is to find the
discrepancy in the 'status' command. To activate the
tracing, the commandline option '--check-object-stat' must
be given.
- (interpret.c) The operations <map> += <map> and <map> -= <map>
now implement the copy-on-write semantic to mirror the
behaviour of the related array operations (suggested by Dafire).
- (interpret.c) get_type_info(<closure>,2) did not return the
bound object for efun, simul-efun and operator closures
(reported by Gnomi).
- (interpret.c) Attempting to replace a program in an object
which already has closures bound no longer raises an error,
but issues a debug_message() (suggested by Pulami).
- (make_func.y) Removed two warnings by bison (reported by Gawain).
10-Aug-2002 (Lars Duening) (3.2.9-dev.444)
- (closure.c) In efun symbol_function(), symbols were freed as
strings (reported by Freaky).
- (main, backend.c) Signal USR2 forces the driver to reopen the
host.debug.log file (thanks, Gawain!).
- (comm, gcollect.c) Experimental: Defining USE_PTHREAD (if your
system has pthread support) activates code which uses threads
to write the socket data to the network in the background.
Intention is to avoid EWOULDBLOCK errors on slow connections
(thanks, Gawain!)
08-Aug-2002 (Lars Duening)
- (comm.c) When using IPv6, get_host_ip_number() used a too small
buffer (thanks, Fiona!)
- (backend.c) Improved the 'doing a GC' messages somewhat.
05-Aug-2002 (Lars Duening) (3.2.9-dev.443)
- (mapping.c) Embarassing: the bugfix broke map() and filter()
for all non-multi-value mappings (reported by Casey).
04-Aug-2002 (Lars Duening) (3.2.9-dev.442)
- (prolang.y) Inheriting the same program twice at the top level
now raises a warning, resp. an error in pedantic mode.
- (simulate.c) If a closure is called from limited() and self-destructs,
the driver would try to free the now-invalid closure argument
and crash (this happened a lot in EotL) (thanks, Casey!).
- (interpret.c) In DEBUG mode, the functions free_object_svalue() and
free_string_svalue() check that they really get the proper data type.
- (efuns.c) Efuns filter() and map(): when used with multi-value
mappings, the driver checks if the called function kept a reference
to the passed array with the values. If yes, a new array is
created for the next iteration to avoid overwriting the old
one (reported by Fiona).
- (interpret.c) When collecting the traceback in a catch(), the
file and line information was used, but not initialized, occasionally
crashing the driver. In addition, in a couple of cases when the
file and line information can't be determined, the file was
left undefined (thanks, Gnomi!)
15-Jul-2002 (Lars Duening) (3.2.9-dev.441)
- (mud/lp-245) The wizlist() simul-efun didn't print proper failure
notices (reported by Vandergnome).
- (gcollect.c) In a GC the list of destructed objects was handled
last, by which time the list might already have been clobbered.
Moving the handling first should plug a memory leak (reported by
Dafire).
- (prolang.y) The crasher correction from dev.439/dev.440 still had
a small bug which caused variables and functions to be assigned
wrongly (reported by Fiona and Gnomi, fixed by Menaures).
- (prolang.y) If a variable was inherited multiple times, the driver
generated a senseless warning (reported by Zora).
- (efuns.c, interpret.c, main.c) Added some support for locales; in
particular the driver now uses the locale defined in the LANG
environment variable for character conversions (thanks, Oskar!).
- (simulate.c) Efun callbacks misparsed the arguments when only the
function name and extra arguments, but no object was provided.
14-Jul-2002 (Lars Duening)
- (etc/memusage) Fiona updated the script to make it more robust and
work with the new OBJ_DUMP format. Furthermore the constants
for $DOMAINS and so on do work now.
05-Jun-2002 (Lars Duening) (3.2.9-dev.440)
- (prolang.y) Oops, yesterday's bugfix was not quite corrected.
04-Jun-2002 (Lars Duening) (3.2.9-dev.439)
- (prolang.y) If a method in a virtual inherit is rendered invisible,
but also made available again through a parallel inherit of the same
program, the compiler resolved the visible function to the
wrong inheritance, causing the driver to crash (b-020530).
13-May-2002 (Lars Duening) (3.2.9-dev.438)
- (config.h.in, Makefile.in, autoconf/configure.in) TRACE_CODE
is now configurable through the configure script, and thus
is located in config.h and no longer in Makefile.
- (gcollect, interpret.c, func_spec) Optional filename argument
to efun garbage_collection() can specify a new GC log file
for the next GC. The filename is validated through
master::valid_write() (f-020312).
07-May-2002 (Lars Duening) (3.2.9-dev.437)
- (mapping.c) Improved the checks for empty mappings in add_mapping()
and add_to_mapping().
- (mapping.c) 'mapping += mapping' now throws an error when the
mappings are of differing width (reported by Alfe and Coogan).
- (prolang.y) New notation '([:<expr>])' as shortcut for
m_allocate(0, <expr>) (suggested by Alfe).
06-May-2002 (Lars Duening) (3.2.9-dev.436)
- (smalloc.c) With CHECK_OBJECT_GC_REF, small chunks could lead to
misleading diagnostics during the GC.
03-May-2002 (Lars Duening) (3.2.9-dev.435)
- (prolang.y) Reworked the program block reallocations to make sure
that their bounds won't be overwritten. This could have been
the reasons for the crashers on corrupted memory (reported by Coogan).
01-May-2002 (Lars Duening)
- (settings/dt2) Updated the DeeperTrouble settings file; and also
removed the mud/dt2 directory since it's no longer necessary
(thanks, Lasse!).
26-Apr-2002 (Lars Duening) (3.2.9-dev.434)
- (prolang.y) Hiding an inherited private nosave variable with an
inherited non-private variable didn't work (reported by Gnomi).
- (prolang.y, lex.c, simulate.c) Compiler error and warning messages
all have the format '<file> line <line>: <text>' now.
- (prolang.y, swap.c) Oops, the linenumber structure was allocated too
small on creation, and read in incorrectly from swap.
- (driver.h) Deactivated the debug defines CHECK_MAPPING_TOTAL
and CHECK_OBJECT_REF since these bugs seem to be fixed.
25-Apr-2002 (Lars Duening) (3.2.9-dev.433)
- (comm.c) Using unbound lambdas for prompts crashed the driver
(reported by Gnomi).
- (driver.h, gcollect, smalloc) When macro CHECK_OBJECT_GC_REF is
activated, every supposedly non-object memory reference in a GC is
checked if it points to an object. If yes, a diagnostic is printed
to gcollect out. Requires MALLOC_TRACE to work.
21-Apr-2002 (Lars Duening) (3.2.9-dev.432)
- (exec.h, prolang.y, interpret.c, object.c, swap.c) Linenumbers are
now kept in a separate memory block, which makes swapping them
out and back in simpler.
20-Apr-2002 (Lars Duening) (3.2.9-dev.431)
- (prolang.y, lex.c) Calls to the master during a compilation now check
the available evaluation costs. If the limit is exceeded, a
compilation error is generated.
- (swap.c) Removing a program block from the swap no longer crashes
if the program doesn't have line numbers (reported by Pixie).
- (prolang.y) Calls to undefined functions now generate a warning
when detected in functions without typechecking if #pragma
pedantic is in effect (before the compiler silently inserted
a prototype).
19-Apr-2002 (Lars Duening)
- (prolang.y) Removed a few bison warnings (reported by Menaures).
18-Apr-2002 (Lars Duening) (3.2.9-dev.430)
- (prolang.y) When passing a wrong argument to a varargs function, the
error message gave the wrong argument number (reported by Gnomi).
- (func_spec, interpret.c) New efun m_add().
09-Apr-2002 (Lars Duening) (3.2.9-dev.429)
- (prolang.y) The improved type checking on <op>= accidentally
broke the type checking on the plain assignment (reported by Dafire).
08-Apr-2002 (Lars Duening) (3.2.9-dev.428)
- (prolang.y) Improved the type checking on the <op>= operators
to match what the VM actually implements (reported by Menaures).
04-Apr-2002 (Lars Duening) (3.2.9-dev.427)
- (mapping.c) During a GC, the .hash member in a mapping does not
point to a mapping-hash structure - the statistics code
ignored that (b-011015-0).
- (gcollect, swap.c) Made the GC status variable less reliant
on magic numbers.
- (swap, gcollect.c, object.c, simulate.c) When removing the swap
entry for a modified program, the code now also makes sure
that the linenumbers are loaded back into memory.
03-Apr-2002 (Lars Duening) (3.2.9-dev.426)
- (prolang.y) '<string> *= <int>' didn't compile (reported by Dafire and
Menaures).
- (swap, gcollect.c, object.c, simulate.c) A hunch: when a program is
swapped for the first time, the driver writes the struct as it
is to the disk. On later swap-ins, this data is read directly
into memory, but never written again. If in the meantime
the prog->blueprint pointer changed, this change will be lost
after the next swap in. It would require a rare sequence of
activities to make this a problem, but it's possible. The change
is therefore to remove the swap block whenever prog->blueprint
changes; let's see if this helps (b-020228-0).
31-Mar-2002 (Lars Duening) (3.2.9-dev.425)
- (simulate.c) Load errors during the initial master load crashed
the driver in the error handling.
30-Mar-2002 (Lars Duening) (3.2.9-dev.424)
- (driver.h) The blueprint code helped some people (but not all), so I
re-activated it as a counter-check.
- (bugs/) Updated the files.
27-Mar-2002 (Lars Duening) (3.2.9-dev.423)
- (mapping.c) *sigh* The mapping check itself contained a fatal error
(reported by Freaky).
- (wiz_list.c) Don't call master::get_wiz_name() when there is no
master. Otherwise a simple warning during the initial master
load would abort the driver (reported by Frank Syse).
- (driver.h, lots of files) If debug macro NO_BLUEPRINT is defined,
the driver no longer tracks the blueprint for a program structure.
This somewhat disables the blueprint() efun, but if it solves
the object refcount problem, I know at least where to look.
- (func_spec, actions, interpret.c) Efun query_verb() now takes an optional
flag to return the verb as specified in the add_action() instead
of the verb given by the user (suggested by Dafire).
26-Mar-2002 (Lars Duening) (3.2.9-dev.422)
- (array.c, mapping.c) Made sure that the callback structures are
properly released on errors.
25-Mar-2002 (Lars Duening)
- (lex.c) *sigh* 'ifstate_t' is also a system type (reported by Alwin).
- (comm.c) Removing the last pending input_to() did not reset the
'input_to pending' flag in the interactive structure (reported
by Gnomi).
- (mapping) The inaccuracy in the mappings statistics is caused
by impossibly high numbers of mapping elements. The checks
done by CHECK_MAPPING_TOTAL have been tightened around possible
places where the too big number could be created.
21-Mar-2002 (Lars Duening) (3.2.9-dev.421)
- (lex.c) The lexer's 'struct ifstate' clashes with an 'enum ifstate'
defined on some systems for the networking stack (reported by Alwin).
- (interpret.c) Removed the negative indexing on control_stack
and value stack by introducing dummy entries at the bottom of
each.
19-Mar-2002 (Lars Duening) (3.2.9-dev.420)
- (pkg-mysql.c) db_connect() didn't check if it got too many arguments,
crashing in that case (reported by Menaures).
- (interpret.c) CHECK_OBJECT_REF: Checking the destructed objects
after every VM instruction used too much time - it is now limited
to F_RETURN, vefuns and tefuns.
16-Mar-2002 (Lars Duening) (3.2.9-dev.419)
- (lex.c) Fixed a memory leak, caused again by a piece of code which
relied on free_svalue() not changing the svalue .type (reported
by Alwin).
- (simulate.c) Setting a driver hook from an unshared string leaked
this string (reported by Alwin).
- (array.c) And this should be the last piece of code which made
assumptions about free_svalue().
- (func_spec, efuns) New efun blueprint().
13-Mar-2002 (Lars Duening) (3.2.9-dev.418)
- (mapping.c) Since free_svalue() no longer leaves the .type untouched,
the CHECK_MAPPINGS sanity stumbled at one point (reported by Bardioc).
12-Mar-2002 (Lars Duening) (3.2.9-dev.417)
- (lex.c) Efun expand_define() did not set the proper type
for the return value - so far undiscovered because free_svalue()
didn't use to change it.
- (Makefiles) Changed default optimization level from High (-O4)
to Medium (-O2), since compilers get notoriously unreliable
at high optimization.
11-Mar-2002 (Lars Duening) (3.2.9-dev.416)
- (simulate.c) The CHECK_OBJECT_REF check was still overzealous;
unfortunately not with the FF mudlib I tested it with. Hmpf.
- (xalloc.c) The heap/stack gap check didn't expect the stack to
be located under the heap, as Cygwin does it.
10-Mar-2002 (Lars Duening) (3.2.9-dev.415)
- (actions.c, simulate.c) The CHECK_OBJECT_REF check was overzealous
and didn't track properly the changes in object sentences. Sorry.
- (interpret.c) Efun all_environment() did not accept destructed objects
as argument as documented (reported by Pulami and Gnomi).
09-Mar-2002 (Lars Duening) (3.2.9-dev.414)
- (xalloc) The implementation of the heap/stack check didn't work
on architectures with really big address spaces - corrected that.
- (mapping.c, interpret.c, object.c, efuns.c) When adding new values
to mapping, the code didn't check if the memory could be allocated
(reported by Menaures).
- (doc/efun) More german translations from Pulami.
07-Mar-2002 (Lars Duening) (3.2.9-dev.413)
- (xalloc, smalloc.c interpret.c, efuns.c, object.c) Added check
to prevent the stack from growing into the heap.
- (smalloc.c) Some expected/found magic word logs were reversed.
- (interpret.c) atan2() did not accept an integer as first argument
(reported by Pulami).
- (doc/efun) Pulami provided a whole bunch of german translations.
- (interpret.c) to_int() on closures didn't work as advertised
(reported by Pulami)
06-Mar-2002 (Lars Duening) (3.2.9-dev.412)
- (simulate, interpret.c, gcollect.c) With CHECK_OBJECT_REF, the
driver continually checks the consistency of the list of
destructed objects.
- (doc/efun/get_dir) Updated the manpage and added the german
version (both provided by Pulami).
05-Mar-2002 (Lars Duening) (3.2.9-dev.411)
- (efuns.c) deep_copy() didn't handle quoted arrays properly (reported
by Gnomi).
- (interpret.c) New efun unquote() (suggested by Gnomi).
- (object, gcollect.c, driver.h) Debug macro CHECK_OBJECT_REF activates
a trace of blueprint allocations/deallocations, to be used to debug
the strange refcount bugs recently encountered (b-020228-0).
04-Mar-2002 (Lars Duening) (3.2.9-dev.410)
- (prolang.y) Publically inheriting functions which had been inherited
protected before now overrides the earlier inherit (f-020303-1).
- (ptrtable.c) When allocating a new ptable, the .table[] member is
cleared.
- (simulate.c) New get_dir() flag GETDIR_PATH adds the full absolute
pathname to the returned filenames (suggested by Pulami).
- (interpret.c) If a value of the wrong type is passed to a switch,
the driver no longer throws a runtime error but instead
jumps to the 'default' case (suggested by Pulami).
03-Mar-2002 (Lars Duening) (3.2.9-dev.409)
- (simulate.c) When the driver runs on a fatal error, it calls
the master lfun notify_shutdown() with "Fatal Error" as argument
before it dumps core.
- (configure) Added a check for 'bison -y' when looking for YACC.
28-Feb-2002 (Lars Duening) (3.2.9-dev.408)
- (simulate, efuns.c, gcollect.c, interpret.c) In addition to the
last uncaught-error trace, debug_info() can now also return
the last error trace in general.
27-Feb-2002 (Lars Duening)
- (smalloc.c) Corrected the statistics adjustment during the freelist
consolidation.
- (backend.c) The check_alarm() method did not recognize the '--no-heart'
option, eventually turning the alarm() back on (reported by Dafire).
26-Feb-2002 (Lars Duening) (3.2.9-dev.407)
- (efuns.c) Adjusted the terminal_colour() sanity check to acknowledge
a certain boundary condition; added a test to make sure that
the indentation is smaller than the wrapping width (reported
by Menaures).
- (actions.c) An error in add_action() could cause the driver to free
memory twice (reported by Menaures).
- (mapping.c) Several allocations weren't checked for success (reported
by Menaures).
22-Feb-2002 (Lars Duening) (3.2.9-dev.406)
- (mapping.c, smalloc.c) Improved the diagnostic messages: all are
now printed to the GC log where they belong.
- (smalloc.c) Added more data to the statistics diagnostics, by
default deactivated since I can debug it over time in OSB.
- (simulate.c) Made the load_object_error() method resistant
against object names with printf format specifications (reported by
Gnomi).
- (mudlib/uni-crasher) Added Menaures' test object to the archive.
21-Feb-2002 (Lars Duening)
- (smalloc.c) Oops, the statistics diagnostic lacked the 'DEBUG:'
tag.
20-Feb-2002 (Lars Duening) (3.2.9-dev.405)
- (prolang.y) Variable definitions are now normal statements and
as such no longer restricted to the beginning of a block (f-000430-1).
17-Feb-2002 (Lars Duening) (3.2.9-dev.404)
- (prolang.y) In a for() loop, variables may now be declared without
initialisation (e.g. 'for (int i; ...)') (suggested by Pulami).
- (random.c) Tentatively modified the scaling of the raw random number
to the desired range so as to avoid overflow problems (investigated by
Collin Baillie for an Alpha machine).
15-Feb-2002 (Lars Duening)
- (prolang.y) The byte move routine to implement call_other sefuns
by using call_other moved bytes in the wrong direction,
crashing the driver if this piece of code was executed (reported by
Coogan).
- (simul_efun.c) simul-efuns shadowing real efuns were not properly
discarded, making it impossible to reactive them (which in a
way was lucky as it made it possible to find the call_other bug).
- (interpret.c) The error handling for a secure call did not
properly roll back the control stack, leaking any closure
referenced from it (b-990505-0).
13-Feb-2002 (Lars Duening) (3.2.9-dev.403)
- (efuns.c) Efun copy_bits(): I accidentally had deleted the lines
handling negative deststart values. The efun was also
prone to numerical overflow effects (reported by Menaures).
- (gcollect.c) Hmm, clear_object_ref() unconditionally cleared
the blueprint reference - this should happen only for
destructed blueprints. Dunno if this was responsible for
the recent crashes in FinalFrontier.
- (sprintf.c) sprintf("%-=10s", "a\nb\n") printed two extra
newlines at the end instead of just one (reported by Gnomi).
11-Feb-2002 (Lars Duening) (3.2.9-dev.402)
- (comm.c) If on shutdown players were already destructed in
notify_shutdown(), the following remove_player() was passed
destructed objects (reported by Dafire).
- (efuns.c) Corrected a crasher in the new efun copy_bits().
- (efuns.c) copy_bits() malfunctioned if src range to copy ended
in unset bits (reported by Menaures).
- (efuns.c) In efun terminal_colour(), the wrapping analysis had
to be separated from the initial length gathering since the
analysis requires all lengths to be available. Without the
separation, the driver ran into a fatal sanity error on some
input values (reported by Dafire).
- (actions.c) Argument errors in add_action() would leak the
action sentence.
09-Feb-2002 (Lars Duening) (3.2.9-dev.401)
- (efuns, func_spec) New efun copy_bits() to copy ranges of
bitstrings (based on code provided by Menaures).
- (interpret.c) And nobody noticed that set_bit() was broken :-)
- (efuns.c) Efun terminal_colour(): In wrapped formatting, when a
word is too long to fit on a line by itself and there are at least
two characters space left on the current line, the long word is begun
immediately. Previously, such long words were always printed on a
line of their own (suggested by Fiona).
07-Feb-2002 (Lars Duening) (3.2.9-dev.400)
- (ed, comm, efuns) Modified the print_prompt() routine so that
the editor prompt is take directly from the editor buffer.
This allows to get rid of the swapping of editor and normal command
prompts, which may also have been responsible for the memory
leaks reported in b-020205-0 (though I can't prove that). As an
aside, the f_set_prompt() function moved from efuns.c to comm.c .
- (actions.c) If notify_fail() was not used from an undestructed
command giver, the given failure notice value leaked (b-020205-1).
07-Feb-2002 (Lars Duening) (3.2.9-dev.399)
- (bugs/) Cleaned up the bug reports.
06-Feb-2002 (Lars Duening) (3.2.9-dev.398)
- (sprintf.c) In justified column formatting, when a word is too
long to fit on a line by itself and there are at least two characters
space left on the current line, the long word is begun immediately.
Previously, such long words were always printed on a line of their
own (suggested by Fiona).
06-Feb-2002 (Lars Duening) (3.2.9-dev.397)
- (bugs) Added more information about memory leaks.
05-Feb-2002 (Lars Duening) (3.2.9-dev.396)
- (mapping.c) The diagnostic in count_mapping_size() forgot to check
for a NULL uid (thanks, Ben!)
- (prolang.y) Inherited public but undefined function were hidden
by (simul-)efuns of the same name, making a resolution by
crossdefinition through another inherited module impossible
(reported by Fiona).
03-Feb-2002 (Lars Duening) (3.2.9-dev.395)
- (simulate, prolang.y, lex.c) Added a limit safety check to
limit_error_format(), and increased the buffer sizes for the
error messages (reported by Gnomi).
01-Feb-2002 (Lars Duening)
- (smalloc.c) Added a check routine for the 'Total small memory'
statistics - I think there is a miscalculation in the
freelist consolidation.
31-Jan-2002 (Lars Duening) (3.2.9-dev.394)
- (mapping.c) Added diagnostic statements to count_mapping_size()
in order to find the place where the mappings statistics
is screwed up.
- (interpret.c) If input_to() was used without command giver,
a NULL pointer string was pushed onto the interpreter stack
due to a missing check in the privilege_violation4()
function (reported by Menaures).
30-Jan-2002 (Lars Duening) (3.2.9-dev.393)
- (gcollect.c) The GC forgot to clear the refcounts in the known
destructed objects, thus sometimes causing a 'First reference
to program, but refcount != 0' fatal error (reported by Coogan,
reproduced by Menaures).
- (interpret.c) replace_program() without argument can now skip
the extra inherits added by the compiler to accomodate
virtual variables (reported by Nathan).
26-Jan-2002 (Lars Duening) (3.2.9-dev.392)
- (prolang.y) The wildcarded supercall "*":: no longer throws an
error if none of the inherited objects defines the called function.
It fits into the semantics of the '*' wildcard ("any or none"), and
it is practical for supercalls like "*"::reset() (suggested by
Zonk@Finalfrontier via Dafire).
25-Jan-2002 (Lars Duening) (3.2.9-dev.391)
- (object.c) Made an error message more informative.
23-Jan-2002 (Lars Duening) (3.2.9-dev.390)
- (prolang.y) The '::' operator did not recognize the separate
namespaces of local variables and functions (reported by
Imp via Gnomi).
- (func_spec, prolang.y, interpret.c) Added new bytecode instructions
nconst1 and nnumber to handle negative constants better (especially
__INT_MIN__) (reported by Menaures).
- (efuns.c, interpret.c, mapping.c) check_map_for_destr() wasn't
called before copying or subtracting mappings (reported by Coogan).
- (strfuns) Added some 'const' qualifiers.
- (simulate.c) Improved the loadtime error messages: they now print
the inheritance chain (suggested by Gnomi).
- (etc/memusage) Provided by Fiona - thanks!
17-Jan-2002 (Lars Duening) (3.2.9-dev.389)
- (interpret.c) The division <int>/<float> used a random
value for the divident (reported by Pulami).
- (simul_efun, simulate.c) Destructing the simul-efun object
immediately invalidates all simul-efuns; this should reduce
the number of 'undefined function' errors when doing manual
reloads of the simul-efun object.
- (make_func.y) Removed a small memory leak.
- (smalloc.c, prolang.y, closure.c) Modified some memory accesses
in order to keep Memory Check tools like ZeroFault happy.
- (regexp.c) The .from_ed member in a newly compiled regexp
wasn't set.
- (object.c) One variable wasn't set.
16-Jan-2002 (Lars Duening)
- (simul_efun) When reloading the simul-efun objects, all previous
sefuns are discarded and removed from the symbol table. Otherwise
if the simul-efun object used cross-defined sefuns itself, the
recompiled object would not recognize the cross-defined calls
and instead pick up the older inactive entry from the symbol
table. This problem may still occur when reloading a simul-efun
object by hand (reported by Coogan and some other people).
- (lex) Inferior identifier entries now have their own string
reference.
- (lex.h, prolang.y) The magic values for ident_t.u.global now
have symbolic names.
15-Jan-2002 (Lars Duening)
- (configure) Fiona did more analysis on the rxcache hash and found
out that using a prime table size doesn't help. I set the size back
to 8192; let's see how bad the collisions are at this small table
size.
14-Jan-2002 (Lars Duening)
- (interpret.c) The overflow error messages for float divisions
named the wrong values (thanks, Guandalug!).
12-Jan-2002 (Lars Duening) (3.2.9-dev.388)
- (configure.in) Fiona pointed out that just halving the rxcache
size doesn't seem to increase the fill ratio. As an experiment
I now set the default size to prime 8191.
- (interpret.c) The float range checks stupidly compared against
DBL_MIN for the low limit instead of -DBL_MAX (reported by Ben).
- (stralloc.c, debug_info) Added a few more string table statistics.
10-Jan-2002 (Lars Duening) (3.2.9-dev.387)
- (lex.c) Added new predefined macros __FLOAT_MIN__ and __FLOAT_MAX__
for the float value limits.
- (interpret.c) Added checks for numeric overflows to float operations.
Btw, <int> / <float> returned a wrong result.
- (configure.in) Reduced the default size of the RXCACHE table to 8192
instead of 16384 entries.
08-Jan-2002 (Lars Duening) (3.2.9-dev.386)
- (efuns.c) Efun terminal_colour() removed a crasher which happened
when too many control sequences appeared in a line (reported by Peng).
- (autoconf/configure.in) Added icc compiler option '-ipo' to highest
optimisation tests.
- (make_func.y, comm.c, lex.c, interpret.c) Removed a couple (but not all)
warnings generated by the Intel Compiler (reported by Dafire).
03-Jan-2002 (Lars Duening) (3.2.9-dev.385)
- (gcollect.c) Forgot to clear the refcounts in the list of
destructed objects. Oops.
- (object.c) free_prog() now also frees its blueprint reference, which
should remove at least one major refcount leak.
- (lp-245/obj/master.c, lp-245/obj/player.c) Small corrections.
02-Jan-2002 (Lars Duening) (3.2.9-dev.384)
- (simulate.c) Corrected the misformatting in 'status'.
- (simulate, comm.c) Corrected a potential crasher when bad arguments
are passed to efun input_to(): the embedded callback structure
wasn't initialized properly, so that the free_input_to() got
garbage data instead of pointers (reported by Menaures).
- (util/xerq/erq.c) Reduced the amount of crap printed in DEBUG
configuration.
- (gcollect.c) There seems to be a problem with leaking object refcounts,
so that destructed objects are tagged as 'referenced' even if they
aren't. The GC will eventually free the memory itself, but inavoidably
mess up the object statistics. As a first measure the GC after
the mark phase checks the list of destructed objects if any
of the objects on it haven't been referenced yet. If so, the
objects concerned are logged and then explicitely included into
the list of objects to free. This way at least the object statistics
will be kept in sync for the time being.
01-Jan-2002 (Lars Duening) (3.2.9-dev.383)
- (gcollect.c, simulate, comm) The GC now removes all stale objects
referenced from the interactive structures during the cleanup phase.
As a side effect, callbacks may no longer reference destructed
objects during the clearing/counting phase of a GC.
- (actions, main.c, backend.c, efuns.c, gcollect.c, interpret.c,
simulate, dumpstat, mudlib/sys/debug_info) Destructed objects
are now kept in a separate list in order to aid mudadmins in analysing
the memory usage of their muds. debug_info(DINFO_STATUS) returns the
statistics in the new fields DID_ST_OBJECTS_NEWLY_DEST and _DEST;
debug_info(DINFO_DUMP, "destructed") dumps the lists to a file; and
the builtin commands 'status tables' and 'dumpallobj' have been
updated accordingly.
31-Dec-2001 (Lars Duening) (3.2.9-dev.382)
- (interpret.c) to_string() can now handle operator closures (suggested
by Gnomi).
30-Dec-2001 (Lars Duening) (3.2.9-dev.381)
- (interpret.c) abs(INT_MIN) now generates an overflow error (reported
by Menaures).
- (driver.h, mapping, smalloc) If debug macro CHECK_MAPPING_TOTAL
is defined, ever change in the registered mapping size statistics
is accompanied with a sanity check. If the check fails, a
DEBUG message is generated on stderr.
- (sprintf.c) When adding columns, a one-line column ending with a
newline inserted the newline on-the spot instead of delaying
it until the end of the line as it was done with multiline
columns (reported by Gnomi).
29-Dec-2001 (Lars Duening)
- (driver/dumpallobj, efun/debug_info) Explained the format of
the OBJDUMP file.
- (settings/tubmud) Updated (thanks, Coogan!)
28-Dec-2001 (Lars Duening) (3.2.9-dev.380)
- (interpret.c) When calling a simul_efun in a vanished object, the
local stackpointer of eval_instruction() was not synchronized
with inter_sp after the call (reported by Gnomi).
- (simul_efun.c) When reloading a simul_efun object, the check for
old sefuns to reactivate ignored changes in the TYPE_MOD_XVARARGS
flag. Since the exact format of the F_SIMUL_EFUN instruction depends
on this flag, this could trip the bytecode interpreter (reported by
Gnomi).
- (mudlib/astar.c) An implementation of the A* pathfinding algorithm,
donated by Acius (thanks!).
21-Dec-2001 (Lars Duening) (3.2.9-dev.379)
- (simulate.c) When checking the refcounts, the extra_refs in objects
named in callbacks weren't counted corrected (reported by Tomba).
- (gcollect, call_out.c, simulate.c) Removed knowledge about the
GC internals from call_outs and callbacks.
19-Dec-2001 (Lars Duening) (3.2.9-dev.378)
- (interpret.c) Corrected a wrong variable initialisation in
efun say() (reported by Nostradamus).
14-Dec-2001 (Lars Duening)
- (interpret.c) Efun set_this_object() queried the master and
simul-efun object without checking if they actually exist.
12-Dec-2001 (Lars Duening) (3.2.9-dev.377)
- (call_out.c) Efun call_out_info() did not return the target object
if the call_out is a closure (reported by Menaures).
- (interpret.c) The increment and decrement operators were missing the
overflow checks (reported by Freaky).
- (lex.c) New LPC defines __INT_MAX__ and __INT_MIN__ for the numeric
integer limits.
- (interpret.c) Another overflow check, this time for __INT_MIN__ / -1
(reported by Menaures).
- (interpret.c) Corrected the bugfix to the say() refcount problem
(thanks, Tomba!)
11-Dec-2001 (Lars Duening)
- (comm.c) TELOPT_TM can now be negotiated from the mudlib as well
(reported by Peng).
11-Dec-2001 (Lars Duening) (3.2.9-dev.376)
- (interpret.c) Additions, subtractions and multiplications now
check for numeric overflows.
11-Dec-2001 (Lars Duening) (3.2.9-dev.375)
- (interpret.c, mapping.c) Oops, the new checks also introduced
divisions by 0 (reported by Menaures).
- (sprintf.c) Runtime fieldsize specification by '%*' didn't check
if the size was given as MIN_INT: it would try to negate it
to get the positive number, but fail and cause the formatting
routines to crash under circumstances (reported by Menaures).
10-Dec-2001 (Lars Duening) (3.2.9-dev.374)
- (interpret.c) gcc 2.91 on Linux/x86 generates buggy code for
MIN_INT % -1, so this case is now explicitely check for
(reported by Menaures).
- (interpret.c) Multiplication of a string with a number was
not checked for numeric overflows in the computation of
the result length (reported by Menaures).
- (smalloc.c) Added a check against numeric overflows in the
computation of the final memory block size.
- (mapping.c) When allocating/resizing mappings, a check against
numeric overflows in the size computations has been added
(reported Menaures).
- 3.2.9-dev.373 had an extraneous debug statement.
05-Dec-2001 (Lars Duening) (3.2.9-dev.372)
- (backend.c) Before calling reset() or clean_up() from the backend,
the previous_object is cleared (reported by Gnomi).
- (main.c) New commandline option:
--random-seed <num>
Seed value for the random number generator. If not given, the
driver chooses a seed value on its own.
This option is for debugging.
- (interpret.c) The mysterious code in calling alien lfun closures to
create a second control frame, deactivated in dev.318, revealed
its purpose: when for such a closure the bound object l->ob
differs from the code object l->function.alien.ob, this fact
needs to be recorded in order to prevent security holes. So the
code fragment has been activated again with a small change: the
second control frame will be created only if the two objects
differ (unknowingly suggested by Menaures).
04-Dec-2001 (Lars Duening) (3.2.9-dev.371)
- (interpret.c) When doing a call_other on an array, inter_sp
was incorrect while getting the object. An error there
then could clobber memory.
- (backend) Added in internal flag 'mud_is_up' for debugging.
- (main.c) The initial random seed is printed for debugging
purposes.
28-Nov-2001 (Lars Duening) (3.2.9-dev.370)
- (interpret.c) In-place execution of invert_bits() returned an
invalid svalue.
- (prolang.y) Another correction to the bugfix of Gimli's problem
(reported by Freaky).
- (lex.c) Line number counting was thrown off by one by the
auto-include string (reported by Menaures and Nathan).
27-Nov-2001 (Lars Duening) (3.2.9-dev.369)
- (prolang.y) The bugfix to Gimlis problem unfortunately broke a couple
of muds. This version works better (reported by many people).
- (array.c) Removed a memory leak in inherit_list()s error handling.
25-Nov-2001 (Lars Duening) (3.2.9-dev.368)
- (mudlib/sys/functionlist.h) Changed the <> include of lpctypes.h
into a "" include (suggested by Heiko).
- (prolang.y) Inheriting two private functions of the same caused the
compiler to crossdefine the second one to the first. Not directly
visible to the user, this messed up any use of these functions
by INITIALIZATION_BY___INIT (reported by Gimli).
- (interpret.c) Efun replace_program() can omit the argument if the
object has only one inherit (suggested by Pulami).
23-Nov-2001 (Lars Duening) (3.2.9-dev.367)
- (object.c) Efun say() could leak object references (reported by Tomba).
- (mudlib/sys/functionlist.h) Changed the absolute include of lpctypes.h
into a <> include (suggested by Heiko).
21-Nov-2001 (Lars Duening)
- (pkg-mysql.c) Using the mysql->thread_id as handle proved to be
unreliable as the thread_id may change. Instead an explicit
handle is now used (thanks, Fuchur!).
- (ed.c) Added command 'T' to perform Tab <-> Whitespace conversion
(thanks, Menaures!).
20-Nov-2001 (Lars Duening) (3.2.9-dev.366)
- (sprintf.c) Printing a table modified the internal precision information
without making a backup. If now the table was applied to an array
of data ("%#99999999999@s" format string), formatting the second
line would cause a crash (reported by Menaures).
- (doc/efun/snoop) Corrected the manpage: snooping an already snooped
player terminates the previous snoop (reported by Zordiac).
19-Nov-2001 (Lars Duening) (3.2.9-dev.365)
- (sprintf.c) It was possible to instruct sprintf to format a string
as both columns and as a table. sprintf() then formatted it as
columns, but any error (like buffer overflow) would crash the
driver. The error recovery is now more robust, and such an invalid
format string is rejected (reported by Menaures).
- (sprintf.c) Max size of the result is now 128 KByte.
- (lex.c) A H_AUTO_INCLUDE closure also receives a flag telling if
it was a <>-type include or not (suggested by Freaky).
- (interpret.c) Efuns and_bits(), or_bits(), xor_bits() mishandled
the bits 5, 11, 17, ... (thanks, Fuchur!)
- (prolang.y) The bugfix yesterday was not quite correct: a pair
of missing parentheses completely changed the meaning of the
check for private inherited functions, causing the driver to crash
(reported by Freaky).
18-Nov-2001 (Lars Duening) (3.2.9-dev.364)
- (array.c) Efun inherit_list: the tagging of virtual inherits
returned a random value for the main program (reported by Freaky).
- (prolang.y) Inherited private functions could hide simul-efuns
or efuns (reported by Gnomi).
- (lex.c) If H_AUTO_INCLUDE is set to a closure, it will be called
for all files opened by the lexer. A second argument passed to
the closure determines whether the call is for the object file
itself or for an included file (suggested by Freaky).
- (func_spec, array, exec.h, prolang.y) New efun include_list()
to return the filenames read when compiling a program.
- (efuns.c) Added the number of included files to the result
of object_info(OINFO_MEMORY).
17-Nov-2001 (Lars Duening) (3.2.9-dev.363)
- (comm.c) Oops, two bugs found.
17-Nov-2001 (Lars Duening) (3.2.9-dev.362)
- (comm) Efun input_to() now accepts a prompt parameter, specifying
the prompt to print.
- (array.c, exec.h, mudlib/sys/inherit_list.h) New flag for efun
inherit_list() allows to tag virtual inherits in the result
(rest of f-991020-0).
- (doc/concepts/hooks) Corrected the docs for the MODIFY_COMMAND hooks.
17-Nov-2001 (Lars Duening) (3.2.9-dev.361)
- (func_spec, prolang.y, make_func, lex, simulate) Replaced the efun
set_auto_include_string() with the driver hook H_AUTO_INCLUDE.
Additionally, a closure can be used to generate the auto include
data (f-000505, f-011026-2, f-990316-1).
- (simulate.c) Removed a small memory leak in set_driver_hook():
replacing hooks leaked the old hook data.
16-Nov-2001 (Lars Duening) (3.2.9-dev.360)
- (sys/debug_info.h, smalloc.c) Efun debug_info(): macro DID_SBRK_SIZE was
typoed as DID_SBKR_SIZE.
- (sys/debug_info.h, smalloc.c) Efun debug_info(): added the derived
statistics DID_MEM_ALLOCATED, _USED and _TOTAL_UNUSED to the
DINFO_DATA:DID_MEMORY data.
- (interpret.c) The stack overflow error handling forgot to update
the stack pointer after cleaning up the stack, causing some
svalues to be freed twice (reported by Coogan).
- (efuns.c) Efun terminal_colour(): Temporary values are no longer
held directly on the stack, but instead in an array on the stack,
thus greatly reducing the stack usage for strings with lots of
colour codes.
15-Nov-2001 (Lars Duening) (3.2.9-dev.359)
- (lex.c) If H_INCLUDE_DIRS is set to an array of directory names,
the names can now have leading '/' (reported by Nathan).
- (mapping.c) check_map_for_destr() didn't check if the mapping
actually had a condensed part - this can happen when called
from compact_mappings() (reported by Freaky).
- (interpret.c) Improved the stack overflow checking a bit, and for
some function calls the local variables were allocated twice.
- (interpret.c) member() and member_array() used with closures
didn't always find them (reported by Gnomi).
14-Nov-2001 (Lars Duening) (3.2.9-dev.358)
- (gcollect.c) Tweaks to the information dumped on fatals.
- (driver.h, gcollect) New debug macro DUMP_GC_REFS (in driver.h)
instructs the GC to list all found references on the gcollect_outfd.
Off by default, this macro should be defined only by people
getting fatal()s like 'First reference to destructed object, but
ref count != 0'.
- (main) New function dprintf4().
- (mapping.c) compact_mappings() did not remove destructed objects
and closures from the mapping (reported by Menaures).
13-Nov-2001 (Lars Duening) (3.2.9-dev.357)
- (gcollect.c, smalloc.c) Removed the compilation problem when
MALLOC_LPC_TRACE is not defined (reported by Menaures).
- (smalloc.c) The computation of a 'magic' word in the freelist
consolidation was wrong, causing bus errors in Tubmud.
- (mud/lp-245) Modified to no longer use deprecated functions
(thanks, Coogan!)
- (simulate.c) Added missing newlines to some error messages
(thanks, Freaky!)
- (efuns.c) Efun transfer() miscalculated the weights when the
target wasn't a living (reported by Zordiac).
- (driver.h) Since FinalFrontier is now running two weeks without
a problem, I deactivated the mapping check code.
- And Zordiac informed me that Deeper Trouble is now running natively
on LDMud.
12-Nov-2001 (Lars Duening) (3.2.9-dev.356)
- (make_func.y) Lexer now understands lines terminated with CRLFs
instead of just LFs (reported by Holger).
- (gcollect.c) When a 'First ref to' with unmatching refcount
is encountered, the memory allocation information is dumped, too.
24-Oct-2001 (Lars Duening) (3.2.9-dev.355)
- (object.c) Efun inherit_list() can now return the inheritance
structure as a tree (part of f-991020-0).
- (backend.c) If a closure is used with regreplace(), it will be
passed the position of the found substring, too (suggested
by Alfe).
- (comm.c) New efun remove_input_to() (part of f-000530).
23-Oct-2001 (Lars Duening)
- (doc/efun/terminal_colour) Improved the explanation of the key
recognition strategy, and added a MudOS simulation function
courtesy of Fiona.
21-Oct-2001 (Lars Duening) (3.2.9-dev.354)
- (actions.c) Removed a crasher when add_action() was performed between
two objects with no environment (thanks, Fuchur!).
18-Oct-2001 (Lars Duening) (3.2.9-dev.353)
- (mapping.c) The search loops for condensed misc keys terminated one
iteration too late before declaring a key as not found, which
occasionally led to 'finding' a key which wasn't really there.
Especially in remove_mapping() this led to clobbered memory.
This probably fixes b-000218, b-000822 and b-000207; maybe
even some of the other strange crashers.
- (sprintf.c) Removed a crasher in justified formatting when the string
to format contained only one word (reported by Slava and Coogan).
- (doc/LPC/arrays, doc/efun/sprintf) Improved examples by
Coogan (thanks!).
17-Oct-2001 (Lars Duening) (3.2.9-dev.352)
- (interpret.c) I had to deactivate the check against negative
range assignments - this feature is in fact in use (thanks,
Coogan and Alfe - and sorry!)
14-Oct-2001 (Lars Duening) (3.2.9-dev.351)
- (mapping, xalloc.c) Didn't compile with sysmalloc as allocator.
12-Oct-2001 (Lars Duening) (3.2.9-dev.350)
- (sprintf.c) Improved the flushing algorithm: spaces are more
evenly distributed, newlines in columns didn't work properly
(reported by Slava).
- (lots of files) Renamed closure_hook[] to the more sensical
driver_hook[].
- (erq, xerq) Erq now accepts an '--execdir' argument to override
the default ERQ_DIR setting (suggested by Freaky).
- (main, comm.c) It is now possible to pass simple arguments to the
erq with the --erq commandline option (suggested by Freaky).
11-Oct-2001 (Lars Duening) (3.2.9-dev.349)
- (sprintf.c) New formatting modifier '$' allows flush formatting
of strings and columns of strings (f-010717).
09-Oct-2001 (Lars Duening)
- (gcollect.c) Increased the refcount of an destructed referenced
object before recursing into the substructures - I have the
feeling that there was a possible race condition, but I can't
prove it.
08-Oct-2001 (Lars Duening) (3.2.9-dev.348)
- (prolang.y) Function definition errors and warnings now all print
the name of the function involved (suggested by Freaky).
- (simulate.c) Shadowing a nomask function now prints the names of
objects involved as well (suggested by Freaky).
07-Oct-2001 (Lars Duening) (3.2.9-dev.347)
- (mapping.c) Darn, I introduced a bug in the diagnostic code of
the last patch. Sorry! (reported by Freaky)
06-Oct-2001 (Lars Duening) (3.2.9-dev.346)
- (mapping) Added some more diagnostic regarding the Finalfrontier bug:
the culprit really seems to be in remove_mapping(). Now, when
the bug is detected, a trace of the activities in remove_mapping()
is printed as well.
06-Oct-2001 (Lars Duening) (3.2.9-dev.345)
- (prolang.y) Warnings about redefinition of visibility apply
to prototype/functions only, but no longer to redefinitions
of inherited functions.
05-Oct-2001 (Lars Duening)
- (lex.c) Termination of a macro definition in an include file
with End-of-file confused the lexer (reported by Tomi).
- (comm) If a message had to be discarded due to contention (EWOULDBLOCK),
the user will receive a information message at the next possible
opportunity.
04-Oct-2001 (Lars Duening)
- (efuns) Renamed efun md5_encrypt() to md5().
03-Oct-2001 (Lars Duening) (3.2.9-dev.344)
- (prolang.y) Prototypes no longer modify the definition of inherited
functions in strange ways (reported by Fiona).
01-Oct-2001 (Lars Duening) (3.2.9-dev.343)
- (prolang.y) The check for redefinition of 'nomask' functions no longer
worked (reported by Gimli).
30-Sep-2001 (Lars Duening) (3.2.9-dev.342)
- (lex.c) Added a warning about empty #pragmas (reported by Slava).
- (interpret.c) Tracing no longer crashes when the command_giver
turns non-interactive (reported by Dafire).
28-Sep-2001 (Lars Duening) (3.2.9-dev.341)
- (lex.c) Spaces before the lineend caused the lexer to complain about
an unrecognized pragma, even though the pragma had been recognized
(reported by Dafire and Slava).
- (efuns.c) Efun terminal_colour(): The escape sequence '%%^^' is
now recognized and replaced by '%^' as is '%^%^' already. This is
for compatibility with MudOS drivers (suggested by Fiona).
- (telnet.h, comm.c) Added support for mudlib negotiation of MCP, MSP
and MXP through the normal H_TELNET_NEG hook (suggested by Markus
Peter).
- (interpret.c, lex.c, smalloc.c) Made it work on Linux s/390 (a machine
where char's are by default unsigned) (provided by Freaky).
27-Sep-2001 (Lars Duening) (3.2.9-dev.340)
- (lex.c) Pragma recognition no longer stumbles over CRs at the line
end (reported by Freaky and Slava).
- (interpret.c) The idiom of assigning to a range [i..i-1] in order to
insert elements is legal again - a lot of mudlibs already use it
(reported by Andre).
26-Sep-2001 (Lars Duening) (3.2.9-dev.339)
- (mapping.c) Finalfrontier was caught by the diagnostic added in dev.337,
this time in remove_mapping(). I added more diagnostics there.
- (interpret.c) Assignments to negative length ranges (eg. [3..2]) are
caught and throw an error (reported by Gimli and Pulami).
- (gcollect.c) Printing memory information during a GC is more robust
against string NULL pointers (reported by Freaky).
- (lex.c) It is possible to specify multiple pragmas in one #pragma
statement, separated by commas (suggested by Largo).
18-Sep-2001 (Lars Duening) (3.2.9-dev.338)
- (mapping.c) Somehow a syntax error managed to get into the file
after I tested it :-( (reported by Dafire and Freaky).
17-Sep-2001 (Lars Duening) (3.2.9-dev.337)
- (mapping.c) Some more diagnostic code for the hash->condensed_deleted
suspect. Also, last_instructions() is no longer called when not
using TRACE_CODE (reported by Fiona).
08-Sep-2001 (Lars Duening) (3.2.9-dev.336)
- (interpret.c) The test if a function call should be trace or not
was done against the command_giver, not against the
current_interactive as documented (reported by Gnomi).
- (simulate.c) When entering a fatal(), the given format string is
printed as is to stderr (just a precaution).
- (smalloc.c) The 'magic match' failed messages now give the expected
block address and sizes, too.
- (lex.c) Added warning when an unknown pragma is encountered (suggested
by Robert).
06-Sep-2001 (Lars Duening) (3.2.9-dev.335)
- (mapping.c) Some more diagnostic code for the mapping bug: at the
moment I suspect that hash->condensed_deleted gets out of sync.
05-Sep-2001 (Lars Duening) (3.2.9-dev.334)
- (prolang.y) The driver couldn't handle (multiple?) second-level inherits
of a 'private nomask' function, which inline closure now are (reported
by Bardioc).
03-Sep-2001 (Lars Duening) (3.2.9-dev.333)
- (interpret.c, mapping) Some more debugging code: if an illegal mapping
size is detected, the MALLOC_TRACE information is printed. I also added
checks to certain suspicious VM instructions - I hope that I won't have
to check all mappings after each instruction.
- (xalloc, smalloc) New helper function dump_malloc_trace() to, well, dump
the malloc trace if there is one.
31-Aug-2001 (Lars Duening) (3.2.9-dev.332)
- (efuns.c) Well, the recent change didn't fix terminal_colour(), so
I changed it back again.
- (lex.c) The lfuns implementing inline closures are now 'private nomask',
which is the real solution unlike the one implemented in 3.2.9-dev.260
(suggested by Freaky).
- (efuns.c) If terminal_colour() was used with a closure returning a
computed string, the ever call (but the first) within the same
formatting clobbered the result from the previous one (reported by Ben
and Elric).
- (swap.c) Oops, when adjusting the allocation statistics after
swapping out variables, the driver occasionally tried to dereference
a non-existing pointer (reported by Ben and Nostradamus).
- (mudlib/sys/lpcytpes.h) The values to be returned by functionlist() were
out of sync with what functionlist() really returned (reported by
Freaky).
30-Aug-2001 (Lars Duening) (3.2.9-dev.331)
- (mapping.c) Since the Finalfrontier mapping bug still occurs,
I added some more instrumentation to the module.
- (efuns.c) Tentative change to correct an obscure bug in the
terminal_colour() code. Let's see if it's going to work.
29-Aug-2001 (Lars Duening) (3.2.9-dev.330)
- (smalloc.c) Corrected a small statistics problem in the
freelist consolidation: some unusable space was counted
twice (b-010713-0, b-000830).
- (swap.c) When swapping variables, the object allocation size
statistics wasn't updated.
- (lex.c) Multi-dimensional array indices in macro calls are no longer
confused with multiple macro arguments (reported by Freaky).
28-Aug-2001 (Lars Duening) (3.2.9-dev.329)
- (interpret.c) More corrections to the refcount checking code.
Furthermore, an failure no longer crashes the driver (but
generates lots of debugging output)
(reported by Tomba).
- (pkg-mysql.c) Removed a memory leak caused by the result set
not begin freed after all the data has been fetched.
- (backend.c) Added safeguard so that slow_shut_down() is not
called repeated while a previous one is still pending (suggested by
Dafire).
28-Aug-2001 (Lars Duening) (3.2.9-dev.328)
- (interpret.c) The reference loop check was too strict and also
flagged legal assignments (thanks, Dan).
27-Aug-2001 (Lars Duening) (3.2.9-dev.327)
- (interpret.c) Improved the check for reference loop creation on
assignment (suggested by Menaures).
- (interpret.c) When reloading the master object, the driver freed
through the driver hooks some object references it shouldn't free
(reported by Tomba).
26-Aug-2001 (Lars Duening) (3.2.9-dev.326)
- (simulate.c) Running the driver with '-d -d' crashed it when loading
objects.
- (interpret.c) The refcount check for got to count the blueprint
reference in programs (reported by Tomba).
- (smalloc.c) The check against MAX_MALLOCED was incomplete and
could lead to use of foreign memory (reported by Menaures).
24-Aug-2001 (Lars Duening)
- (func_spec) Even though the efun get_type_info() was supposed to
take an arbitrary type as second argument, it wasn't declared that
way (thanks, Fiona!).
23-Aug-2001 (Lars Duening) (3.2.9-dev.325)
- (array.c) ERQ callbacks for a destructed object don't have a
current_object at the time the error occurs. The error handling code
allocates an array, but the array code was still assuming that
current_object is always valid (b-990217-4) (reported by Fiona).
- (prolang.y) Redefining an inherited private function with a non-private
one, and then inheriting the redefinition didn't work (reported by
Menaures).
22-Aug-2001 (Lars Duening) (3.2.9-dev.324)
- (interpret.c) The lambda protection had a bug: when a non-lambda closure
was called from within an executed lambda, the lambda closure was
accidentally freed (reported by Fiona).
- (sprintf.c) *blush* I completely forgot to add the terminator 0 after
creating the quoted representation of a string (thanks, Menaures!).
21-Aug-2001 (Lars Duening) (3.2.9-dev.323)
- (prolang.y) The 'private' correction caused the driver to crash
under obscure circumstances. I implemented the correction now
in a different way, and it seems to work now (reported by Bardioc and
many others).
- (prolang.y) If an efun was called with too many arguments, the
extraneous args were popped twice from the argument stack, so that
subsequent function calls clobbered memory (reported by Dafire).
- (sprintf.c) For the new '%Q' format, string length is now computed
with strlen() instead of svalue_strlen() - the latter is too
sensitive towards constructed strings (reported by Menaures).
- (simulate.c) Added an error when the time left for a catch() is less
than the reserved cost.
19-Aug-2001 (Lars Duening) (3.2.9-dev.322)
- (prolang.y) Defining a function which is also a private function in an
inherited object no longer redefines the inherited one (reported by
Bardioc and Menaures).
- (sprintf.c) Closures on inherited lfuns are printed with the defining
program for the %O format.
- (sprintf.c) New format specifier 'Q' acts like 'O', except that special
characters in strings are quoted (suggested by Menaures).
15-Aug-2001 (Lars Duening) (3.2.9-dev.321)
- (interpret.c) Holding a reference on a lambda works much better
if the code actually increment the correct refcount.
14-Aug-2001 (Lars Duening) (3.2.9-dev.320)
- (interpret) The VM now holds a reference on a lambda while it is
executed, preventing premature destructions (reported by Dan and
Fiona).
- (simulate, actions.c, backend.c, comm.c, gcollect.c) Since the VM
now protects lambdas during their execution, the free_closure_hooks()
hack is no longer needed. For now, the code has been just
deactivated.
- (interpret.c) Corrected late-night errors in efuns ceil() and floor()
(reported by Niels).
13-Aug-2001 (Lars Duening)
- (mapping.c) Adding a mapping to itself via 'm += m' freed svalues first,
then used them as data for assignment (reported by Patryn).
12-Aug-2001 (Lars Duening)
- (func_spec) Somehow the change for sizeof() didn't make it into
the distribution (reported by Menaures).
07-Aug-2001 (Lars Duening) (3.2.9-dev.319)
- (lex.c) The recognition of numeric character constants was slightly
wrong (thanks, Fiona).
06-Aug-2001 (Lars Duening)
- (interpret.c) Efun program_name() now accepts 0 as
argument and pass it through (suggested by Niels).
- (func_spec, interpret.c) Efuns floor() and ceil() also accept integer
argument values (suggested by Niels).
05-Aug-2001 (Lars Duening) (3.2.9-dev.318)
- (simulate.c) Destructing an object with a single shadow crashed the
driver (reported by Craig).
- (interpret.c) Efuns load_name() and object_name() now accept 0 as
argument and pass it through (suggested by Niels).
- (interpret.c) Calling an alien-lfun created two control frames instead
of just one, with no obvious purpose. I removed one of the frames
but commenting out the code, so if it is needed nonetheless, it
will be easy to reactivate (reported by Niels).
- (interpret.c) For the first 255 simul-efuns it is now permissible to
receive references in a varargs parameter, e.g. to implement
a simulated call_other(). Handle with care! (reported by Coogan)
- (configure) Improved the search for mySQL libraries - it is amazing in
how many different ways this package is installed.
02-Aug-2001 (Lars Duening)
- (interpret.c) Corrected a wrong function argument (reported by Freaky).
01-Aug-2001 (Lars Duening) (3.2.9-dev.317)
- (prolang.y) The error message for the case that a wildcarded super
call tried to pass arguments was confusing (reported by Gimli).
- (interpret.c) Efun sizeof() can be used on strings (suggested by Niels).
31-Jul-2001 (Lars Duening) (3.2.9-dev.316)
- (pkg-mysql.c) Fixed a syntax error. It sucks that I can't compile
this file at home, doesn't it?
- (lex.c) A preprocessor statement following a macro redefinition
wasn't recognized because the macro parsing code clobbered
the newline character (thanks, Fuchur!).
26-Jul-2001 (Lars Duening) (3.2.9-dev.315)
- (lex.c) The redefinition of a macro messed up the list of defines,
eventually crashing the driver (reported by Freaky).
- (efuns.c) Using terminal_colour() with a closure as lookup method
an a non-tabled keyword crashed the driver (reported by Elric).
- (simulate.c) Clones no longer inherit the current O_WILL_CLEAN_UP
flag from their blueprint - it didn't make sense (thanks, Niels!).
25-Jul-2001 (Lars Duening) (3.2.9-dev.314)
- (sprintf.c) Printing numbers with leading zeroes and a sign character
printed the sign in the wrong place (reported by Dafire).
- (backend.c) The check_alarm() function did not quite work right
(thanks, Coogan!).
- (backend.c) Efun regreplace(): Pattern which could match on the
empty string matched once too often at string end.
E.g. regreplace("blah fasel", ".*", "ERSATZ", 1) returned
"ERSATZERSATZ" instead of just "ERSATZ" (thanks, Fiona!).
- (typedefs.h) Upped the StrRefCount type to 'unsigned long' (b-010320).
- (lex.c) Redefinition of a macro yields a warning even if the
definition doesn't change (suggested by Gnomi).
- (backend.c, simulate.c) The initial setting of the O_WILL_CLEAN_UP flag
checked for the hardcoded "clean_up" lfun instead for what the
H_CLEAN_UP hook said. Also, the documentation was slightly out
of sync with the reality (thanks, Niels!).
- (mysql.c) db_error() used a non-existing argument (thanks, Dafire!).
17-Jul-2001 (Lars Duening) (3.2.9-dev.313)
- (array, gcollect.c, mapping) The GC now recounts the number of arrays
and mappings in the game (reported by Niels).
- (prolang.y) If the compiler detects a function call with too many
arguments, the subsequent argument type checks were wrong
(reported by Fiona).
- (sprintf.c) Instead of using the new modifier '$', the efun now
uses the existence of an explicite pad string specification
as flag whether to remove pad space before new lines or not.
This is actually more logical to use than a modifier (suggested
by Largo).
- (actions.c) The special command 'malloc' now follows the
'is_wizard' handling of the other special commands (thanks,
Niels).
16-Jul-2001 (Lars Duening) (3.2.9-dev.312)
- (gcollect.c) Oops. Freeing a circular array reference with
MALLOC_LPC_TRACE enabled crashed the driver in the dump
of the array contents.
15-Jul-2001 (Lars Duening) (3.2.9-dev.311)
- (actions, simulate) Removing or destructing a shadow now properly
removes all associated actions (reported by Nathan).
- (actions.c) New add_action() flag AA_IMM_ARGS implements the sane
NOSPACE argument handling.
15-Jul-2001 (Lars Duening) (3.2.9-dev.310)
- (configure) When testing for mySQL, the driver automatically checks
in /usr/local/include as well (some systems don't have it the
default include path).
- (configure) Added a check for 'minimal optimization' options.
- (configure) When compiling on Windows, link in a couple of more
libraries. This might not be fully correct yet.
- (make_func.y) Removed a couple of warnings under gcc 3.0 (thanks,
Largo!).
- (comm.c) On a regular shutdown, stop the erq demon explicitely.
- (main.c) When compiling for MSDOS_FS, the erq pathname wasn't built
correctly (reported by Coogan).
- (sprintf.c) Simul-efun closures printed with %O are marked as such.
- (closure.c) Comparison of operator, efun, and simul-efun closures
was instable (reported by Nathan).
13-Jul-2001 (Lars Duening) (3.2.9-dev.309)
- (interpret.c, comm.c, parse.c, parse_old.c) Removed a couple of
undefined behaviours, detected by gcc 3.0 (thanks, Largo!)
- (sprintf.c) Format modifier '$' instructs (s)printf() to not remove
padding white space before a lineend.
- (efuns) New efuns gmtime() and localtime() to return the time broken
up into its constituents (suggested by Markus Peter).
- (lex.c) Escaped character constants are now only parsed up to a
maximum length. If no valid digits are found, the whole item
is simply treated as escaped character (thanks, Fiona!).
05-Jul-2001 (Lars Duening) (3.2.9-dev.308)
- (prolang.y) It is now possible again to redefine a non-static inherited
variable with a static one (or vice versa), but it also generates
a warning.
- (doc/concepts/intermud*) Intermud-2 documentation added (thanks, Fiona!)
03-Jul-2001 (Lars Duening) (3.2.9-dev.307)
- (prolang.y) How embarrassing! The code for !INITIALIZATION_BY_INIT
had a bad syntax error - and I didn't notice it (thanks, Bardioc!)
01-Jul-2001 (Lars Duening) (3.2.9-dev.306)
- (configure) 'with_wizlist_file=no' didn't work from settings files
(reported by Freaky).
- (configure) A superfluous 'fi' broke the configure.
- (lex.c) '//' comments didn't like to be terminated by the end of
file (reported by Matthew).
30-Jun-2001 (Lars Duening) (3.2.9-dev.304 and dev.305)
- (hosts/os2) Updated the OS/2 port (provided by Bart).
30-Jun-2001 (Lars Duening) (3.2.9-dev.303)
- (prolang.y) Relaxed type checking somewhat so that a non-mixed
function argument can be redefined to mixed, and vice versa
(suggested by Gnomi)
- (lex.c) Escaped character constants in inline closures weren't
recognized (reported by Freaky and Gnomi)
- (doc/LPC/comments) New.
- (configure.in) When using mySQL, also check for libnsl.
- (configure.in) The mySQL path is now used for both include
and library searches.
29-Jun-2001 (Lars Duening) (3.2.9-dev.302)
- (prolang.y) Accidentally it was no longer possible to redefine
privately inherited variables (reported by Gnomi).
- (actions.c, simulate.c) New hook H_SEND_NOTIFY_FAIL to deliver
the notify fail message. It is meant for those muds who want
control over the command flow without having to implement everything
themselves via the H_COMMAND hook. This hook is still experimental
and may change in details (suggested by Gnomi).
- (prolang.y) It is now possible to define a default visibility
for functions and variables (see doc/LPC/modifiers) (suggested
by Freaky).
29-Jun-2001 (Lars Duening) (3.2.9-dev.301)
- (main.c) Commandline arguments can now be read from a textfile, using
new commandline option '--args'. These argument files can be nested.
(suggested by Elric)
28-Jun-2001 (Lars Duening) (3.2.9-dev.300)
- (configure) The evaluation of the '--with-wizlist-file' configuration
option was less than flawless.
- (main.c) Instead of scanning the arguments twice, all encountered
-f options are stored in a temporary list and evaluated when
it's time (f-010603-1).
- (main.c) Laid the groundwork for nested sources for the command
arguments.
27-Jun-2001 (Lars Duening) (3.2.9-dev.299)
- (simulate.c) When parsing callback arguments, the pattern 'function,
object, extra' was parsed such that 'object' became part of the
'extra' arguments (reported by Marthin).
- (lex.c) It is now possible to use symbols in inline closures, ie.
"(: 'a :)" (reported by Menaures).
- (main.c, lex.c, wiz_list, configure) The name of the WIZLIST file
can now be configured at compile time and with commandline option
'--wizlist-file'. The LPC macro __WIZLIST__ expands to the selected
name. The WIZLIST file can also be disabled completely
('--no-wizlist-file'), in which case __WIZLIST__ is not defined
at all (based on a patch from Elric).
- (call_out.c) Corrected a fatal refcount bug in the garbage collection
of call_outs with destructed command givers (reported by Gnomi).
22-Jun-2001 (Lars Duening)
- (sprintf.c) Column-formatting a string with one newline
printed one newline too few if the formatstring didn't end
immediately (reported by Gnomi).
21-Jun-2001 (Lars Duening)
- (make_func.y, lex.c) Identifier names can use the extended alpha
characters from the ISO 8859-1 alphabet (suggested by Elric).
17-Jun-2001 (Lars Duening) (3.2.9-dev.298)
- (backend.c) cleanup_stuff() also executes a clear_state() to
avoid dangling object references (reported by Gnomi).
- (pkg-mysql.c) Added efun db_error() to return the most recent
error string (thanks to Casey and Dafire).
- (efuns.c) If the driver is compiled with DYNAMIC_COSTS, the cost
of efun clones() is proportional to the number of objects
in the game.
13-Jun-2001 (Lars Duening) (3.2.9-dev.297)
- (prolang.y) Global variables can no longer be redefined (reported
by Coogan).
- (doc/efun/operators) Clarified the behaviour of (<type>) casts.
- (simulate.c, interpret.c) Normal runtime errors (and their traceback)
are no longer reported on stdout at all (reported by Tomi).
- (etc/startmud.pl) Added a simple start/keep-alive script - feel
free to improve on it (thanks, Krystal-Anne!)
11-Jun-2001 (Lars Duening) (3.2.9-dev.296)
- (interpret) Nifty little crasher: if the object holding the closure
currently execute is destructed, the interpreter happily tried
to free the closure after execution without noticing
that it already has been freed (as part of the object destruction
process) (reported by Freaky).
09-Jun-2001 (Lars Duening) (3.2.9-dev.295)
- (main.c) Improved the formatting of the language options in the
'--options' output.
07-Jun-2001 (Lars Duening)
- (comm.c) The driver forgot that it is in noecho/charmode mode after
the second consecutive input_to call, sending out unnecessary
telnet negotiations.
- (interpret.c) When an object is destructed, all references to it
are removed from the stack - including references through
closures. Before, only direct T_OBJECT references were removed
(reported by Gnomi).
04-Jun-2001 (Lars Duening) (3.2.9-dev.294)
- (prolang.y) The type on function return is too strict (or the
type tracking in general too lacking) unfortunately,
so I took it out again.
03-Jun-2001 (Lars Duening) (3.2.9-dev.293)
- (prolang.y) A cast of a type to itself is now a no-op as it should
be (reported by Gnomi).
- (interpret.c, prolang.y) Integers and float can now be compared
against each other (suggested by Gnomi).
- (gcollect.c) The GC forgot to trace the program->blueprint pointer
which was introduced dev.278 (reported by Coogan).
02-Jun-2001 (Lars Duening)
- (backend.c) The check_alarm() function also restores the alarm
signal handler.
- (prolang.y) It is now possible to cast to '(mixed)'.
- (prolang.y) Improved the type tracking of '?:': it now accepts
operands of different types and evaluates to 'mixed' in that
case (reported by Dennis VanHoey)
- (prolang.y) Improved the type checking at function return under
strict_types.
25-May-2001 (Lars Duening)
- (configure) Comments may now appear at the end of the lines in
a settings file (thanks, Bertram!).
24-May-2001 (Lars Duening) (3.2.9-dev.292)
- (efuns) Efun terminal_colour() can now use closures to translate
colour keys (suggested by Elric).
- (backend.c) Removing destructed objects in the process-objects
loop clobbered the list of programs to replace (reported by
Gnomi).
22-May-2001 (Lars Duening)
- (backend.c) Efun regreplace() can now take a closure to produce
a replacement string (suggested by Fiona) (f-010516-2).
16-May-2001 (Lars Duening) (3.2.9-dev.291)
- (backend.c) The call to clean_up() erroreously counted the internal
blueprint-program reference to the reference count passed to the
clean_up() apply. Additionally, before the call all pending
destructed objects are removed (suggested by Elric).
- (rxcache.c) The regexp cache forgot to compare the excompat flag,
occasionally selecting the wrong regexp (thanks, Fiona).
16-May-2001 (Lars Duening) (3.2.9-dev.290)
- (closure.c) Of course I forgot to remove one debugging related
conditional, which effectively disabled yesterdays bugfix.
15-May-2001 (Lars Duening) (3.2.9-dev.289)
- (sscanf) Clarified the documentation regarding the matching of
'%s' (reported by Pulami and Gnomi)
- (closure.c) Compiling a simul_efun with extended varargs
in a lambda closure created faulty bytecode (reported by Gnomi).
13-May-2001 (Lars Duening) (3.2.9-dev.288)
- (prolang.y) Undid the casting change, as it broke the idiom
's = (string)foo->bar();' where bar() may signal a failure
by returning integer 0. It's the old 0/nil dichotomy again.
- (efuns.c) Efun sscanf(): the format '%s%d' failed to parse 'ab1cd'
correctly (reported by Pulami).
09-May-2001 (Lars Duening) (3.2.9-dev.287)
- (prolang.y) Casting an unknown or mixed type now always inserts
a proper conversion (reported by Tomi).
- (heartbeat.c) The result for DID_ST_HBEAT_AVG_PROC was computed
as int instead of float (reported by Freaky).
- (mud/morgengrauen) Added basic support for the MorgenGrauen 3.2.6
mudlib.
08-May-2001 (Lars Duening)
- (prolang.y) The expression 'a & b' failed to track the types if one
of the operands was of TYPE_ANY (reported by Gnomi).
06-May-2001 (Lars Duening)
- (interpret.c) Added a protection against simple reference loops
as created by 'b = 0 || &a; b = 0 || &a;' (reported by Gnomi).
28-Apr-2001 (Lars Duening) (3.2.9-dev.286)
- (several files) Added modifications for the Amiga/gcc port
(provided by Niels).
27-Apr-2001 (Lars Duening) (3.2.9-dev.285)
- (sprintf.c) Duh. A typo caused '%^' to eat the next character
from the format string (reported by Robert).
- (sprintf.c) A leading '0' used to pad the whole field with 0s.
Now, only leading 0s are printed and this setting and the
explicite pad string are independent of each other (suggested
by Fiona).
- (call_out.c) Removing call_outs, or call_outs going stale, messed
up the 'number of callouts' statistics (provided by Gnomi).
25-Apr-2001 (Lars Duening) (3.2.9-dev.284)
- (prolang.y) Pre-increment or -decrement failed to terminate
the parser reduction, causing an internal fatal error when the
result was used somewhere (reported by Dafire).
24-Apr-2001 (Lars Duening) (3.2.9-dev.283)
- (efuns.c) Efun sgn() used on negative integers still returned +1 -
a simple typo (thanks, Fiona!).
23-Apr-2001 (Lars Duening)
- (func_spec) Efun copy_mapping() is deprecated.
22-Apr-2001 (Lars Duening) (3.2.9-dev.282)
- (interpret.c) When using a multi-dimensional allocate(), specifying
0-sized dimensions could crash the driver (reported by Menaures).
- (Makefile.in) When doing 'make install', the driver is now installed
as 'driver', not 'parse' (reported by Eivind).
- (docs) Some corrections, provided by Fiona.
- (closure.c) The generation of sparse lookup ranges failed to properly
generate default-jumps for the values between two consecutive
ranges (e.g. 'case -2..-1:, case 1..2:' was smudged into 'case -2..1:
case 0..2:') (reported by Menaures).
19-Apr-2001 (Lars Duening) (3.2.9-dev.281)
- (configure, main.c, simulate, call_out.c) Runtime for the total
number of callouts, settable with commandline option
'--max-callouts'.
17-Apr-2001 (Lars Duening) (3.2.9-dev.280)
- (prolang.y) Redefining an inherited private heart_beat() didn't work:
the new heart_beat() wasn't called (reported by Gnomi).
- (rxcache.c) The status functions were far too slow, because they
counted the number of entries on each call (reported by Sissi).
- (prolang.y) Function calls can distinguish between variables and
functions of the same name (suggested by Gnomi).
16-Apr-2001 (Lars Duening) (3.2.9-dev.279)
- (interpret.c) The call to privilege_violation() for efun call_out_info()
passed some random data instead of constant 0 as argument
(reported by Freaky).
13-Apr-2001 (Lars Duening)
- (simulate.c) Made the 'illegal object to load' error message
more informative (suggested by Freaky).
12-Apr-2001 (Lars Duening)
- (sprintf.c) The formatter "%^" will print "%^" for compatibility
with terminal_colour().
- (closure.c, array.c) Introduced a total order on closure svalues
which allows their use in alists and array operations like
intersection. The same could be done for their use in mappings,
but that change is too big to be squeezed into 3.2.9 (reported
by Gnomi).
11-Apr-2001 (Lars Duening) (3.2.9-dev.278)
- (prolang.y) Additions of floats to constant 0 yielded TYPE_ANY
instead of TYPE_FLOAT.
- (interpret.c) Arguments passed to runtime_error() were wrong
if the error happened in a master apply (reported by Gnomi).
10-Apr-2001 (Lars Duening)
- (exec.h, prolang.y, simulate.c) The program structure received
a pointer pointing to the blueprint object. Main purpose is to
allow the cheap deep update of the master object, but other
uses will probably show up as well.
- (simulate.c) Added function deep_destruct() to destruct an
object and the blueprints of all inherited programs.
- (backend.c, interpret.c) The signal SIGUSR1 now destructs the
master object and all its inherits, to allow a clean reload.
07-Apr-2001 (Lars Duening) (3.2.9-dev.277)
- (smalloc.c) The multiple-of allocation was not quite correct.
06-Apr-2001 (Lars Duening) (3.2.9-dev.276)
- (md5.c) Removed a compiler warning.
- (smalloc.c) On Darwin, we get the memory from the system only
in multiples of 64 Bytes, which caused the creation of too-small
large blocks. Fixed that.
05-Apr-2001 (Lars Duening) (3.2.9-dev.275)
- (actions.c) If an action doesn't have a verb defined, the error
will list the object which created the action (suggested by Gnomi).
04-Apr-2001 (Lars Duening) (3.2.9-dev.274)
- (Makefiles) Corrected.
- (efuns, md5) New efun md5_encrypt() (thanks, Gawain!)
- (interpret.c) Assigning a volatile strings sometimes crashed due
to a faulty length computation (reported by Gnomi and Parsec!)
- (lex.c) An attempt to '(: ;} fun() {... :)' is now detected and
rejected (reported by Daniel Fischer).
03-Apr-2001 (Lars Duening) (3.2.9-dev.272, -dev.273)
- (lex) Corrected a bug in yesterday's change.
- (doc/efun) Removed references to deprecated efuns.
- (erq, xerq) Fixed (hopefully) a type mismatch under Darwin.
- (make_func, lpc parser) Wrapped the parser into wrappers which
selectively define 'lint' to suppress spurious warnings, and
under Darwin enable compilation in the first place.
02-Apr-2001 (Lars Duening) (3.2.9-dev.271)
- (lex) When generating names for inline closures, the compiler
makes sure that the name hasn't been used yet (reported by Dan).
30-Mar-2001 (Lars Duening)
- (lex.c) The include path and filenames returned by the master the
and H_INCLUDE_DIRS closure can now start with leading slashes
(suggested by DaFire).
- (xerq) The incoming data buffer is cleared before each new command,
in order to detect errors more easily (suggested by Gawain).
- (comm.c) When using charmode against non-charmode clients (TinyFugue),
the line end wasn't handled properly. The solution is to receive
the data in charmode, but to pass it on to the user as if in
linemode.
27-Mar-2001 (Lars Duening)
- (interpret.c) All <op>= assignment operators can now operate on a
char lvalue (indexed string) on the left hand side.
20-Mar-2001 (Lars Duening) (3.2.9-dev.270)
- (erq, xerq/execute.c) Quoted arguments are recognized and not split into
words (provided by Christian W., thanks!)
- (backend.c) The no-var-swapping time before a reset() is limited to
5 minutes max, otherwise a lot of muds will never swap variables.
- (array.c) A correction to the correction to functionlist() (thanks,
Fiona!).
- (func_spec, interpret.c) Efun allocate() now accepts an initialisation
value (f-981229-09a).
- (configure.in) When using mySQL, the script also checks for and links
in the libz (reported by Bardioc).
16-Mar-2001 (Lars Duening) (3.2.9-dev.269)
- (pkg-mysql.c) Dafire provided to new mySQL efuns: db_insert_id()
and db_coldefs() - thanks!.
- (array.c) The list control for functionlist() was documented
incorrectly, and also functioned incorrectly (thanks, Fiona!).
15-Mar-2001 (Lars Duening) (3.2.9-dev.268)
- (settings/unitopia) Updated (thanks, Freaky!).
- (comm.c) The pathlength safety check in the start-erq-demon routine
was too cautious (thanks, Freaky).
- (mudlib/dhrystone.c) Added a missing assignment.
- (xerq/Makefile.in) Accidentally left the XDEBUG option enabled.
- (comm.c) A prompt closure bound to a destructed object is detected
and restored to the default prompt. An error is still thrown, to
give the mudlib hackers something to do.
- (pkg-mysql.c) The version check did not really work (thanks, Dafire!).
14-Mar-2001 (Lars Duening) (3.2.9-dev.267)
- (main.c, comm.c) The command option '--erq' can now be used to
specify the full pathname of the erq executable (suggested
by Freaky).
- (comm.c) Before printing a prompt via a closure, the current object
is set to the command giver. This avoids a crash under (admittedly
rare) circumstances of closure destruction.
13-Mar-2001 (Lars Duening) (3.2.9-dev.266)
- (dumpstat.c, gcollect.c) Added uses of StrRefCount where I forgot
them earlier (thanks, Freaky!)
- (backend.c) When calling the master apply slow_shut_down(), it is
made sure that previous_object(), this_player(), and
this_interactive() are all 0 (reported by Freaky).
- (comm.c, ed.c, interpret.c, simulate.c) Removed spurious checks
for out-of-memory condition. While the intention is noble, it hasn't
been implemented consequently enough to be of any use.
- (comm.c) If a CRLF as expansion of a NL character was to be inserted,
but only one character was left in the buffer, the code errorneously
detected a 'message shorter than minimum, needs not be send'
condition, thus swallowing all following characters after the NL.
- (interpret.c) Argl. Letting the ==/!= comparison for floats fall through
to the all new and improved closure comparison was not a good idea
(reported by Gnomi and Freaky).
12-Mar-2001 (Lars Duening) (3.2.9-dev.265)
- (pkg-mysql.c) db_connect() optionally takes a username and a password
(thanks, Andre!)
09-Mar-2001 (Lars Duening) (3.2.9-dev.264)
- (mud/lp-245) Small corrections.
- (configure) Another define for 'void' signal return types - this one
can be tested directly, as a comparison of the values of RETSIGTYPE
is not portable.
05-Mar-2001 (Lars Duening) (3.2.9-dev.263)
- (smalloc.c) Corrected a statistics error (reported by Freaky).
- (simulate, interpret, efuns.c) Added the last error trace as
possible return from debug_info(DINFO_TRACE) (suggested by Gnomi).
04-Mar-2001 (Lars Duening) (3.2.9-dev.262)
- (interpret.c) Removed a VM stack leak in ++/-- on floats (reported
by Dafire).
- (object.c) The previous object for object resets is this_object()
(reported by Gnomi).
- (Makefiles) Added 'lint' to the compiler defines to ensure a smooth
compilation of prolang.y.
28-Feb-2001 (Lars Duening) (3.2.9-dev.261)
- (backend.c) Simplified the error message output in write_file().
- (simulate.c) The master apply runtime_error() receives an extra
argument describing if the error is a normal error, or occured
during a heartbeat (suggested by Freaky).
- (func_spec) Efuns add_verb() and add_xverb() are now part of the
deprecated bunch.
- (gcollect.c) Added a dump function for closure literals.
27-Feb-2001 (Lars Duening)
- (lex.c, gcollect.c) Cosmetics.
- (smalloc.c, main.c) xfree() now accepts NULL pointers. Allocation of
MIN_(SMALL_)MALLOCED blocks actually check if the memory is
allocated (reported by Freaky).
- (main.c, backend.c, interpret.c) Swapping is no longer an optional
feature, though it still can be disabled by specifying swapping
times of 0.
- (configure.in, main.c, xalloc) New commandline options '--min-malloced'
and '--min-small-malloced' to complement the configuration options
(suggested by Freaky).
- (hosts/win32) Updated the various files with those provided by
Coogan (thanks!)
26-Feb-2001 (Lars Duening)
- (smalloc) Renamed the constant MASK to M_MASK, as MASK seems to clash
with one of Darwin's symbols.
- (smalloc.h) svalue_strlen() did not use StrRefCount in all the places
it should be used (reported by Freaky).
22-Feb-2001 (Lars Duening) (3.2.9-dev.260)
- (func_spec, efuns) The efuns debug_info() and object_info() can now
return single values instead of whole arrays.
- (backend, comm.c) Added a check method which restarts the alarm
after some time of activity. This is required at least for
Cygwin on Windows, where the alarm often gets lost (thanks, Holger!).
- (interpret.c) The master apply valid_trace() now receives as second
argument the argument passed to the efun (suggested by Coogan).
- (typedefs.h, interpret.c, gcollect.c, stralloc, smalloc.h) Introduced the
type StrRefCount for the shared string refcounts. This will make it
easier to switch from 16-Bit to 32-Bit refcounts (after 3.2.9
has been released, since it should undergo some more testing)
(p-010208).
- (lex.c, prolang) Inline closure 'inherit' the visibility modifiers
of their defining function (suggested by Coogan).
- (smalloc.c) Corrected an accounting error in consolidate_freelists().
21-Feb-2001 (Lars Duening) (3.2.9-dev.259)
- (autoconf/configure.in) Some more small fixes.
- (prolang.y) Recognize an inherited heart_beat() only if it is visible
(adopted from Morgengrauen).
- (efuns.c) debug_info(DINFO_DATA, DID_STATUS) now returns the number
of executed heartbeats as well as the total number of heartbeats.
- (settings/morgengrauen) New configuration file.
20-Feb-2001 (Lars Duening) (3.2.9-dev.258)
- (autoconf/configure.in) Corrected some replacement directives.
- (func_spec) Removed two duplicate efun definitions which caused
Cygwin compiles to hang.
- (make_func.y, lex.c) Added diagnostics to detect duplicate efun
and string definitions.
- (autoconf/configure.in) The option --enable-use-mysql now also
accepts a directory path under which the libmysqlclient can be
found (f-000918).
16-Feb-2001 (Lars Duening) (3.2.9-dev.256 and -dev.257)
- (main.c) Added code to unblock SIGALRM on program start - on systems
it is blocked randomly for no obvious reason (thanks, Fini!)
(maybe fixes b-000308)
- (efuns, func_spec) New efun sgn() to retrieve the sign of a numeric
argument (suggested by Croft).
13-Feb-2001 (Lars Duening)
- (lots of files) New configuration option 'use-deprecated' allows
to disable obsolete and deprecated efuns. If enabled, the macro
__DEPRECATED__ is defined (suggested by Coogan).
- (lots of files) The UDP port is now a standard feature. The
option has been renamed from 'catch_udp_port' to just 'udp_port'.
- (lots of files) The UDP efuns have been renamed from send_imp()
and query_imp_port() to send_udp() and query_udp_port(); as were
the associated privilege violation string and the master apply.
The old names are still available with USE_DEPRECATED.
12-Feb-2001 (Lars Duening)
- (interpret.c) Assigning volatile strings was somehow no longer
supported under all circumstances (reported by Gnomi).
07-Feb-2001 (Lars Duening) (3.2.9-dev.255)
- (smalloc.c) Removed a compilation error (reported by Coogan).
06-Feb-2001 (Lars Duening)
- (strfuns.c) When (re)allocating the strbuf buffer, the length was
accidentally casted down to unsigned short, causing the program
to write outside the allocated memory (reported by Sebastian).
05-Feb-2001 (Lars Duening)
- (smalloc.c) Using the time_stamp() from within the allocation routines
was really stupid.
- (smalloc.c) The large block allocator had an off-by-one error which
left free large blocks of 'small' size behind. These blocks could
never be allocated, just merged again.
- (smalloc.c) The routine to split largish free small blocks was faulty,
causing coredumps.
- (parse_old.c) Expanded the list of hard coded prepositions.
- (lex.c) Added new standard predefine __LDMUD__, expanding to an empty
string.
- (settings/heaven7, mud/heaven7/) Added basic support for Heaven7: you can
boot the mud and log in. There are probably still errors in the
areas.
31-Jan-2001 (Lars Duening)
- (interpret.c) Attempts to set a single string character to 0
are now caught with a runtime error (reported by Nico).
- (func_spec) The result of set_prompt() can be a string or a closure,
yet it was declared to return only string (reported by Gnomi).
- (prolang.y) The type tracking for multiplication returned an 'int'
result even for 'mixed' operands (reported by Gnomi).
- (interpret.c) The relations '==' and '!=' can now compare lfun-
and variable closures (suggested by Gnomi).
- (func_spec, efuns) New efuns min() and max().
30-Jan-2001 (Lars Duening)
- (configuration, smalloc.c) Added a new config parameter
MIN_SMALL_MALLOCED which defines the size of the first small chunk
allocated by the system.
- (xerq) With ERQ_FORK started subprocesses are now as well handled
with a child_t structure. While not exactly necessary, it allows
for useful diagnostics in the sig_child() handler (reported by
Freaky).
- (dumpstat, efuns.c) The internal data measuring routines now return
both the total data size, as well as the data size scaled down
according to the extend of data sharing. The results are also
returned by object_info(OI_MEMORY) (suggested by Freaky).
26-Jan-2001 (Lars Duening) (3.2.9-dev.254)
- (smalloc.c) Introduced a free list for 'oversized' small blocks which
is used much like the unused space in a small chunk. This list
allows the consolidation function to keep large free blocks
together even if they exceed the legal maximum size for small
blocks.
25-Jan-2001 (Lars Duening)
- (smalloc, gcollect.c) New function consolidate_freelists() to
rebuild the small block free lists, merging adjacent free small
blocks where possible. Additionally, when a small chunk is exhausted
the small block allocator first tries to split one of the larger
free blocks before getting a new small chunk.
25-Jan-2001 (Lars Duening) (3.2.9-dev.253)
- (xerq/execute.c) Corrected some small bugs (thanks, Freaky!)
24-Jan-2001 (Lars Duening)
- (port.c) The time_stamp routines recompute the string result only
if the time has changed since the last call.
- (efuns.c, smalloc.c) smalloc now keeps a statistic about the number
and size of permanent and clib allocations; and debug_info()
returns this statistics as part of (DINFO_DATA, DID_MEMORY).
- (smalloc.c) Defining the macro DEBUG_SMALLOC_ALLOCS causes smalloc
to log all new allocations which can't be satisfied directly
from the free lists. The output is written to the same stream
as the GC log (default is stderr).
19-Jan-2001 (Lars Duening) (3.2.9-dev.252)
- (main.c) Change to the default MUD_LIB directory early, so that the
debug.log file is opened in the right place (reported by Elric).
- (xerq) The parent now synchronizes with the child by sending a specific
byte of data.
- (pkg-mysql.c) Markus Peter provided a patch for backwards compatibility
with mySQL before 3.22.24.
- (main, comm.c) The name of the erq executable can now be given on the
commandline with the option '--erq <filename>' (suggested by Freaky).
18-Jan-2001 (Lars Duening)
- (comm.c) In efun exec(), if this_interactive() points to one of the
the involved objects, it is switched over as well, like this_player()
already is (reported by Elric).
- (xerq) Freaky found and corrected a couple race conditions in the
clean-up loops of socket and children.
- (backend.c) Efun debug_message() now allows to preprend the message
with a timestamp for the current date and time, controlled by
a new bitflag (suggested by Freaky).
17-Jan-2001 (Lars Duening)
- (xerq) Added additional diagnostic output, activated with compiler
option XDEBUG. Also, removed two uninitialized variables (the stdout/
stderr sockets in the child_t structure) in the handling of child
processes, and added measures against buffer overflows.
16-Jan-2001 (Lars Duening)
- (erq.c, xerq/socket.c) When closing the connection to a child
process, the erq makes sure to read all still remaining data
from the connection (reported by Freaky).
21-Dec-2000 (Lars Duening) (3.2.9-dev.251)
- (comm.c) If the driver received only a NL in charmode, the first
following character was ignored.
21-Dec-2000 (Gnomi)
- (comm.c) Found and corrected a problem concerning the use
of CHARMODE with Windows' telnet: the charmode negotiation were
considere a failure too early, and moreover the CHARMODE_REQ flag was
reset without adjusting the input buffer variables. Unfortunately
this re-opens b-000818. (b-001214)
- (comm.c) Clients sending CRLF in Charmode instead of just CR
are now handled properly: the LF is ignored like the NUL in CR NUL
already is. This also re-fixes b-000818.
- (comm.c) When receiving DONT ECHO or WONT SGA, the check for if
the option has already been granted was wrong.
- (comm.c) After a charmode input_to() has been received, the driver
did not properly reset the text pointers, causing !-escaped
commands to go unrecognized.
20-Dec-2000 (Lars Duening) (3.2.9-dev.250)
- (comm.c, interpret.c) More small corrections to the new telnet
error reporting.
- (func_spec, backend.c) Extended the efun debug_message() to take
a parameter telling where to log the message (suggested by Freaky).
19-Dec-2000 (Lars Duening) (3.2.9-dev.249)
- (mudlib/floattest.c) Unfortunately this code was a derivate of
a copyrighted program from Numerical Recipes, and therefore can't be
distributed legally.
- (lex.c) On solaris, strtod() does not clear errno after a successful
conversion, causion spurious warnings (reported by Coogan).
- (main.c) The driver version is now also printed in the .debug.log
file on startup.
- (comm.c) A bug in the comm_fatal() routine caused the driver to
abort on the second call to it. Oops. (reported by Gnomi and
Freaky)
15-Dec-2000 (Lars Duening) (3.2.9-dev.248)
- (comm, simulate.c) When the telnet machine for a player gets into
an inconsistent state, the driver no longer aborts. Instead, the
player's interactive structure is dumped to stderr, and then
removed the hard way.
- (regexp.c) Added the metacharacter '+' (match at least once'
to the regexp code (provided by Terry Penn, thanks!).
- (mudlib/floattest) This LPC program computes the floating point
characteristics; it can be called from the test_master (provided
by Croft, thanks!)
14-Dec-2000 (Lars Duening) (3.2.9-dev.247)
- (lex.c) Octal numbers are now prefixed by '0o' - it's cleaner
and avoids compatibility problems with existing code.
12-Dec-2000 (Lars Duening) (3.2.9-dev.246)
- (interpret.c) Omitting a check_map_for_destr() in a mapping addition
caused data in a wiz_info mapping to mysteriously disappear (thanks,
Coogan) (b-001204).
10-Dec-2000 (Lars Duening) (3.2.9-dev.245)
- (prolang.y) The result type for '++map[mixed]' was computed
incorrectly (reported by Freaky).
- (comm.c) If an error occurs on accept(), the driver no longer abort()s
but prints a better error message.
06-Dec-2000 (Lars Duening) (3.2.9-dev.244)
- (lots of files) Closures bound to destructed objects are now treated
like destructed objects and zeroed out where possible.
- (wiz_list) Destructed objects and closures is now removed from the
'extra' wizinfo in regular intervals. Note that this doesn't
extend to subarrays and -mappings held by the 'extra' info.
06-Dec-2000 (Lars Duening) (3.2.9-dev.243)
- (autoconf/configure.in, configure) If MySQL or IPv6 are not requested,
the configure script won't check for the libraries; consequently
they won't linked in unless needed (suggested by Coogan).
- (interpret.c, prolang.y) The operators '++' and '--' can now be
used on floats, too (suggested by Croft).
04-Dec-2000 (Lars Duening)
- (interpret.c) sqrt(0.0) caused a 'bad argument' error - corrected
that (thanks, Andre!).
30-Nov-2000 (Lars Duening) (3.2.9-dev.242)
- (interpret, efuns.c) debug_info(DINFO_TRACE) returns the current
call stack as either string or array. (f-000716)
29-Nov-2000 (Lars Duening)
- (interpret.c) The efuns sin(), cos(), tan(), atan(), atan2(),
log(), exp(), sqrt() and pow(), when given an integer argument,
returned a float result typed as integer. (reported by Slava)
28-Nov-2000 (Lars Duening) (3.2.9-dev.241)
- (lex.c) Oops, a last minute change to remove a warning broke the
recognition of escaped characters in strings (thanks, Slava!).
27-Nov-2000 (Lars Duening)
- (interpret.c) Efun pow() did not properly check its arguments.
27-Nov-2000 (Lars Duening) (3.2.9-dev.240)
- (lex.c) Numbers can be specified in binary using the '0b' prefix.
- (lex.c) Moved the parsing of escaped character sequences into a
separate function, and implemented the specification of characters
through their numeric code (expressed in decimal, octal, sedecimal
and binary). (f-990203-04)
26-Nov-2000 (Lars Duening) (3.2.9-dev.239)
- (closure.c) Implemented catch-nolog as '({#'catch, <body>, 'nolog })'.
21-Nov-2000 (Lars Duening)
- (prolang) Folded catch() and catch_nolog() back into one catch(),
distinguished by the keyword 'nolog'.
18-Nov-2000 (Lars Duening)
- (func_spec, interpret.c) The efuns sin(), cos(), tan(), atan(), atan2(),
log(), exp(), sqrt() and pow() now accept integers as arguments, too.
The results remain float. (suggested by Croft).
- (interpret.c, mapping.c) When testing for a 'mapping too large' condition
on mapping addition or element assignment, it is made sure that all
invalid keys have been removed. (reported by Fiona)
- (func_spec, lex.c, interpret.c, simulate, prolang.y) New language
construct catch_nolog() as alternative to catch(): the new statement
doesn't log the error in the driver logfiles (thanks, Michael!)
(p-990901).
- (lots of files) The mode of the driver (plain or compat) can now be
selected with the commandline options '--no-compat' resp. '--compat'.
The default is still selected during configuration. (f-981229-00)
17-Nov-2000 (Lars Duening)
- (mudlib/sys, doc/) Small corrections (thanks, Coogan!).
15-Nov-2000 (Lars Duening)
- (mudlib/telnet_neg.txt) Added Slava's example on telnet negotiation,
which includes a means of measuring lag using TMs (thanks!).
15-Nov-2000 (Lars Duening) (3.2.9-dev.238)
- (efuns.c) The OIB_NAME returned by object_info(OINFO_BASIC) did
not start with a '/' in plain mode. (reported by Fiona)
- (mud/lp-245) Added secure/master.c as a wrapper for obj/master.c for
use with plain drivers.
- (func_spec, interpret.c, port) Added new efun utime() (provided by
Slava) and adapted ctime() to accepts its output.
- (settings/unitopia) Updated with new version provided by Freaky.
- (settings/default) Clean up.
14-Nov-2000 (Lars Duening)
- (strfuns, actions.c, ed.c, efuns.c, interpret.c, swap.c, wiz_list.c)
New function xstrncpy() to copy a string up to a certain length, but
without adding extra 0 padding if the string is shorter than the
given length.
07-Nov-2000 (Lars Duening) (3.2.9-dev.237)
- (efuns.c) object_info(OINFO_MEMORY) also returns the program flags
NO_SHADOW, NO_CLONE and NO_INHERIT.
- (pkg-mysql.c) Small bugfix (thanks, Michael!)
- (settings/forgottendreams) Updated according to Michael.
- (util/[x]erq/erq.h) Around dev.220 I accidentally broke
compatibility with older erq binaries by renumbering the KEEP_HANDLE
constant - fixed that now. (reported by Coogan)
05-Nov-2000 (Lars Duening)
- (interpret.c) call_resolved() now accepts a destructed object as
second argument and returns 0 instead of throwing an error.
(reported by Coogan)
- (settings/tubmud) 'nosave' is now on by default.
03-Nov-2000 (Lars Duening) (3.2.9-dev.236)
- (interpret.c) When setting up the frame for a function, resolve a
possible cross-definition first. (b-000616, b-001004)
- (interpret.c, prolang.y) Right shifts of 32 or more are now properly
defined.
02-Nov-2000 (Lars Duening) (3.2.9-dev.235)
- (mapping.c) Adding two mappings of different width throws an error
(reported by Holger and Fiona). (b-001010)
01-Nov-2000 (Lars Duening)
- (regexp.c) Added a patch by Marcus Meissner to make regexp more compatible
with 8-bit characters (thanks!).
23-Oct-2000 (Lars Duening)
- (simulate, interpret) Moved the catch_instruction() function into
simulate to keep aggressive optimizers from over-optimizing this
function. I hope this finally cures the catch() related crashes.
(thanks, Coogan!) (b-001010-1)
16-Oct-2000 (Lars Duening)
- (simulate, array.c, call_out.c, comm.c, mapping.c) Callbacks now accept
protected lvalues as arguments only if they are called just once.
Reason is that the protectors don't count references: at the first
return from a callback the lvalue would be freed even though it
is still needed.
(b-001002)
12-Oct-2000 (Lars Duening)
- (main.c) New driver option '--pidfile <filename>' to write the
pid of the driver into a file (suggested by Freaky).
10-Oct-2000 (Lars Duening)
- (backend.c) The IGNORE_BANG option to efun input_to() didn't
work (provided by Casey, thanks!).
- (pkg-mysql.c) Changed some xalloc()s into pxalloc()s to protect them
against the GC (provided by Michael Fedrowitz, thanks!).
- (interpret.c) Cosmetics to the traceback output (thanks, Coogan).
- (simulate.c) A semicolon was missing (thanks, Christian B.).
13-Sep-2000 (Lars Duening) (3.2.9-dev.234)
- (func_spec, lex.c, closure.c, interpret.c, prolang.y) Added the
operators '>>>' and its cousin '>>>=' for logical right shifts.
11-Sep-2000 (Lars Duening)
- (configure) Removed no longer used option 'max-log-size' (reported
by Malcom).
09-Sep-2000 (Lars Duening) (3.2.9-dev.233)
- (simulate.c) Callbacks in efuns like filter() can now take references,
too (reported by Freaky).
07-Sep-2000 (Lars Duening) (3.2.9-dev.232)
- (simulate, call_out) Due to a flag inversion, call_out() was unable
to take lvalues as arguments. It also gave the error message
with an off argument count (reported by Thorsten).
06-Sep-2000 (Lars Duening)
- (interpret) The setjmp() for a catch() instruction has been moved into
its own stack frame and eval_instruction() is called recursively
on the guarded code. This seems to prevent failures and cores
when using gcc as compiler, and doesn't hurt on other platforms
either (reported by Parsec).
05-Sep-2000 (Lars Duening)
- (xerq/socket.c) A faulty comparison caused the xerq to ignore
SOCKET_STDERR and send everything on stdout (thanks, Fiona!).
30-Aug-2000 (Lars Duening) (3.2.9-dev.231)
- (comm.c) The driver did not fully recover from a failed INPUT_CHARMODE
notification - treating the input as in charmode even after the
failure. (b-000818)
29-Aug-2000 (Lars Duening)
- (interpret.c) When reactivating a destructed master, the function
applies failed to find static functions, even though all other
master applies do (thanks, Daniel!)
28-Aug-2000 (Lars Duening) (3.2.9-dev.230)
- (pkg-mysql.c, configure, Makefile.in) Made the mySQL code work again.
Additionally the mysqlclient library is now part of the @PKGLIBS@
template in Makefile.in, so that utils like xerq don't have to
link it in. (thanks, Michael!)
25-Aug-2000 (Lars Duening) (3.2.9-dev.229)
- (xerq/lookup.c) In the IPv6 lookup, a buffer was freed twice.
(found by Uwe and Fiona).
- (pkg-mysql, doc/..., INSTALL) Integrated the mySQL efuns into the
driver proper. They are activated on suitable hosts with the
configuration switch 'use-mysql' and, when activated, define
the macro '__MYSQL__' in LPC programs.
- (lex.c) Added new LPC defines __VERSION_MAJOR__, ..._MINOR__,
..._MICRO__ and ..._PATCH__ do exactly what you expect.
24-Aug-2000 (Lars Duening) (3.2.9-dev.228)
- (INSTALL) Added compilation notes provided by Bruce (thanks!)
- (xerq/erq.c) The DEBUG part was missing the data to generate proper
error messages for RLOOKUPV6 requests (reported by Fiona).
- (comm.c) Removed two warnings.
23-Aug-2000 (Lars Duening) (3.2.9-dev.227)
- (util/indent/, autoconf/configure.in) The Makefile is now under
configure control, and I removed a couple of warnings.
- (util/erq/erq.c) Oops, the check for HAVE_SYS_TIME came before
machine.h was included, so it couldn't work (reported by Betram
and Fiona).
22-Aug-2000 (Lars Duening) (3.2.9-dev.226)
- (hash, stralloc) Changed a few parameters from 'char*' to 'const char*'.
- (comm.c, erq, xerq) The IPv6 lookup was totally broken - fixed it.
(reported by Holger)
20-Aug-2000 (Lars Duening) (3.2.8-dev.225 == 3.2.8)
- RELEASE 3.2.8
- (func_spec, prolang.y) Efun clonep() now accepts 'mixed' arguments.
(suggested by Fiona)
- (interpret.c) The salt-handling of efun crypt() is now compatible
with the md5 passwords of FreeBSDs libscrypt. (thanks, Gerhard!)
15-Aug-2000 (Lars Duening) (3.2.8-dev.224)
- (prolang.y) All ranges '[..<op><expr>]' caused the compiler to overwrite
memory (most of the time the compiled program) because the attributes
of <expr> weren't promoted up by the <ob>.
- (lex.c) '//' comments in the argument list of a function macro at the
point of use were not ignored and caused syntax errors. It even was
already a 'TODO' in the lexer... (reported by Croft and Parsec).
14-Aug-2000 (Lars Duening) (3.2.8-dev.223)
- (prolang.y) The range '[..-<expr>]' caused the compiler to overwrite
memory (most of the time the compiled program) because the attributes
of <expr> weren't promoted up by the '-' (reported by Mammi).
- (prolang.y) In the expression '++<ident>' the opcode for '++' was
overwritten if the <ident> required a 2-Byte index. (b-000803,
b-000810)
- (comm.c) Looking up hostname first enters the IP address as string
into the lookup table, to be replaced later by the ERQ. This neatly
handles unresolved hostnames as well (provided by LynX).
11-Aug-2000 (Lars Duening) (3.2.8-dev.222)
- (mstrings) Completed the implementation of the string module itself.
10-Aug-2000 (Lars Duening)
- (func_spec, interpret.c, efuns.c) Efun terminal_colour() can now be used
with no keyword mapping at all: it then acts as a simple wrapping
efun.
08-Aug-2000 (Lars Duening)
- (smalloc.c) Attempts to free a memory block twice are now explicitely
flagged (when compiling with MALLOC_TRACE).
- (lex.c) #else and #endif followed by uncommented text raise an error
only in pedantic mode; otherwise just a warning is generated.
- (array.c, regexp.c, backend.c) Made the handling of a regexp's memory
more resistant to errors. Especially an error during a match or the
first pass of a regexp compilation caused the memory for the last
regexp compiled being freed unconditionally, even when that last
regexp was still in use or had been freed already.
04-Aug-2000 (Lars Duening)
- (lex.c) After an include, the driver did not refill its lex buffer.
This had bad or even catastrophic results if the include failed
and the include statement was the last in the lex buffer.
(reported by Freaky)
- (lex.c) The preprocessor statements #else, #endif and #define now
check if they are followed by uncommented text. If yes, the
former two raise an error (like real C does), if no, the latter
one raises an error. (reported by Freaky)
01-Aug-2000 (Lars Duening) (3.2.8-dev.221)
- (hosts/be/Makefile, .../beyacc) The driver can now be crosscompiled
on x86 for PPC.
- (mud/lp-245) Corrected a few simul_efun definitions.
- (lex.c) '#else' was not recognized if followed by whitespace.
(reported by Bardioc and Dafire)
30-Jul-2000 (Lars Duening) (3.2.8-dev.220)
- (prolang.y) Redefinition of an inherited function with differing
arguments was not properly differentiated from a normal redefinition,
causing the redefined argument information to be lost even with
#pragma save_types in effect. (reported by Bardioc)
- (mstrings) First code for an improved string handler.
26-Jul-2000 (Lars Duening) (3.2.8-dev.219)
- (lex.c) Preprocessor keywords weren't recognized if they were
followed by a non-space character (e.g. '# if('). (reported
by Fiona).
- (object.c) Saving a mapping to a file wrote unsaveable keys like
objects as '0' into the savefile, possibly creating multiple
entries with the same key. As restore_object() didn't expect
this, svalue were simply overwritten instead of properly freed.
This lead to memory leaks. Now, non-saveable keys and their
data are completely excluded from a saved mapping, and the
restore function is more robust. (part of: b-990429, b-991123-1,
b-000104)
25-Jul-2000 (Lars Duening)
- (interpret.c, smalloc.c) Removed two warnings (thanks, Freaky!).
23-Jul-2000 (Lars Duening) (3.2.8-dev.218)
- (main.c) The removal of MAX_SMALL_MALLOCED somehow didn't make
it into the diff.
20-Jul-2000 (Lars Duening) (3.2.8-dev.217)
- (regexp.c) Errors in the regular expression leaked the memory
from temporary buffers (found by Freaky).
18-Jul-2000 (Lars Duening)
- (smalloc.c, xalloc, main.c, settings/*, configure.in)
When the system run out of memory in a small block allocation
during a GC, it tended to crash
because the interaction of the 'force_more' allocation and the
'max_small_malloced' parameter caused the allocator to free the
reserves, but to never check the freelists. Removing the
max_small_malloced parameter and slightly simplifying the
force_more logic solved the problem. As a side effect, the
commandline argument '--max-small-malloc' and the corresponding
configuration parameter are gone.
17-Jul-2000 (Lars Duening)
- (closure.c, gcollect.c, dumpstat.c, interpret.c, object.c)
Revisited the places where a NULL object->variables might
be used. Especially replace_program was suspectible to this.
- (interpret.c) Efun to_string() now accepts lambda closures
as well. sprintf() was modified to print the same information
as to_string() returns. (suggested by Fiona)
06-Jul-2000 (Lars Duening) (3.2.8-dev.216)
- (smalloc.c) Removed two warnings (thanks, Freaky!)
- (lex.c) Improved the display of the error context at line ends
or end of files.
- (configure, port, machine.h.in) Ultrix (VAX) doesn't provide
the strdup() function, so I added a check and a replacement
function. Ironically, make_func.y already has its own strdup()
for exactly this reason... (reported by Bruce).
04-Jul-2000 (Lars Duening) (3.2.8-dev.215)
- (smalloc.c) Oops, the file didn't compile.
03-Jul-2000 (Lars Duening) (3.2.8-dev.214)
- (comm.c) A DEBUG_TELNET statement was at the wrong place, dereferencing
an uninitialized variable (b-000620).
- (object.c) Forgot to delete the old ixopen() statement when making
the change in 3.2.8-dev.210, causing the driver to run out of
fds because every savefile was opened twice. (b-000630)
- (smalloc.c) Added more magic words to accomodate the increased
SMALL_BLOCK_MAX value. In addition, the magic word arrays are
indexed modulo their size in case SMALL_BLOCK_MAX is increased
over the size of the arrays again.
- (interpret.c) Made the VM Stack error messages more informative.
- (prolang.y) Provided by UNItopia: return type mismatches are by
default warnings, and in pedantic mode real errors.
- (Makefile.in) The generated Makefile ended the OBJ definition
on sane systems with a line ending in a backslash, which the
Ultrix make doesn't like. (thanks, Bruce!)
01-Jul-2000 (Lars Duening) (3.2.8-dev.213)
- (main.c) DEBUG options are printed with --options, too.
- (object.c) If a savefile can't be opened, the strerror() message
is included into the error message.
- (backend.c) If the driver runs out of fds in efun write_file(),
lex_close() is called only when there is a compilation going
on (before, it was called on every out-of-fds, which crashed
the driver if it happend outside of a compile). (reported by
Freaky)
- (comm.c) h_telnet_neg() always removed two values from the
stack, regardless of many actually were there. (b-000625)
- (interpret.c) The handling of a caught error in catch() has
been exported in a separate, non-inlineable function to
thwart overzealous optimizers. (b-000606)
- (doc/LPC/closure_guide) Clarified the creation of mappings
using #'([. (b-000217-1)
- (lex.c) lex_error_context() pays more attention to the end
of the line buffer and EOF characters - before it blindly
copied 14 characters after *outp. (b-000518)
29-Jun-2000 (Lars Duening) (3.2.8-dev.212)
- (settings/unitopia, doc/efun/count_bits) Small changes.
- (backend.c) The 'inconsistency in main loop' message is now
printed onto stdout, too.
- (main, backend.c) The state check (available when compiled with
DEBUG) can now be controlled via the commandline option
'--check-state <lvl>'.
28-Jun-2000 (Lars Duening) (3.2.8-dev.211)
- (prolang.y) Removed the shift/reduce conflict in the rules for
argument definitions: token L_VOID was ambiguous.
- (prolang.y) The argument type check stumbled over additional
arguments in a function redefinition. (reported by Bardioc)
- (interpret.c) Operator += allows to add strings and floats to ints,
as operator + already does. (reported by Croft)
27-Jun-2000 (Lars Duening) (3.2.8-dev.210)
- (closure.c) The lambda block ({ #'return }) was compiled incorrectly:
a F_RETURN0 was generated, but for the closure compiler the block
returned void, necessiting the insertion of a default value by
the surrounding block. The result was a 'Bad stack at F_RETURN' at
the final F_RETURN[0] of the lambda closure latest,
e.g. for funcall(lambda(0, ({ #'?, 1, 1, ({ #'return }) }) )).
(reported by Mat@Maethos)
- (object.c) Under Cygwin and other MSDOS filesystem systems, the
savefiles are opened in binary mode. (thanks, Bastian!) (b-000528)
16-Jun-2000 (Lars Duening)
- (pkg/mysql) Integrated the update to dev.207 (thanks, Malcom!)
14-Jun-2000 (Lars Duening) (3.2.8-dev.209)
- (settings/hyperborea) added.
- (comm.c) The default routine for answering telnet negotiation requests
forgot to clean up the LPC stack when no hook was defined, thus
eventually overwriting memory. Since this happened only with
clients which actually did negotiate options, this bug remained
undetected for quite some time. (b-000508)
- (backend.c) Since b-000508 would have been found earlier if the
LPC stackpointer had been checked for consistency, I reactivated
the check_state() mechanism in DEBUG mode.
- (lex.c, prolang.y, interpret.c) Corrected the linecounting in
combination with inline closures (found by Zora).
12-Jun-2000 (Lars Duening) (3.2.8-dev.208)
- (efuns.c) present(object) returned the environment of the object
found, not the object itself. While traditional, this behaviour
is rather illogical. (thanks, Freaky!)
- (several files) Clarified some casts.
04-Jun-2000 (Lars Duening) (3.2.8-dev.207)
- (mapping.c) Added a fatal() if the mapping size rises over 0x10000000.
This is to track down b-000218.
02-Jun-2000 (Lars Duening)
- (comm.c) Added a number of debug prints to debug the telnet machine.
The are inactive unless DEBUG_TELNET is defined.
30-May-2000 (Lars Duening)
- (doc/efun/send_imp) Added a note regarding the handling of errors
on some machines. (thanks, lynX!)
- (interpret.c) The driver now prints the last 200 instructions when
fatal()ing in DEBUG mode. In addition, the trace also lists the
absolute stack usage together with the already known relative
usage.
29-May-2000 (Lars Duening) (3.2.8-dev.206)
- (stralloc) Small improvements to the CHECK_STRING mechanism. Added
several diagnostics regarding possible refcount over/underflows.
- (stralloc) New define 'KEEP_STRINGS' prohibits shared strings
from being deallocated. While memory intensive, this is a debugging
measure to locate the 'free string not found' error.
28-May-2000 (Lars Duening) (3.2.8-dev.205)
- (configure) Remade with autoconf 2.13
28-May-2000 (Lars Duening) (3.2.8-dev.204)
- (prolang.y) Warnings are generated if the redefinition of a function
loses the 'varargs' attribute (pedantic only), or if the redefinition
makes an incompatible change to the return type. Assignment type error
messages are more informative. And the argument type warnings/errors
are now printed for the correct source line, not the one following the
function.
- (ed.c) New command 'M' to strip ^Ms from lineends (thanks, Dafire!)
- (hosts/be/Makefile) The cross-compiled executable is provided with
proper resources and file attributes (icons!).
- (doc/LPC/if) Added.
27-May-2000 (Lars Duening)
- (prolang.y) Misplaced prototypes are now a warning, not just a debug
message.
23-May-2000 (Lars Duening) (3.2.8-dev.203)
- (comm.c, util/xerq/erq.c) Corrected a type error which caused the
erq to misinterpret message lengths, resulting in overwriting
its global variables: Due to a missing sign, the driver did not
handle a blocking write() operation properly, causing the resend of
the pending data to start off at the wrong offset. In turn, the
xerq did not protect itself against invalid message lengths.
This bug only triggered when the mud tried to sent more data
to the erq at once than the connection could handle. (Thanks,
Elric!) (b-000404)
22-May-2000 (Lars Duening)
- (various files) Cleaned up a couple of documentary files.
22-May-2000 (Lars Duening) (3.2.8-dev.202)
- (prolang.y) Whenever a function is redefined, the argument types
are checked for consistency. If they differ, a warning
(error in pedantic mode) is issued. The same mechanism compares
the prototype for a function with its definition.
21-May-2000 (Lars Duening)
- (smalloc.c) Added a diagnostic to the 'Temporary out of mem'
situation, because the driver run totally out of mem before
the usual diagnostic in the allocating code is reached.
20-May-2000 (Lars Duening)
- (interpret.c) foreach() makes sure that destructed objects are
removed from arrays. Also, assign_svalue_no_free() assigns 0
to the destination if the source is a destructed object.
18-May-2000 (Lars Duening) (3.2.8-dev.201)
- (lex, prolang.y) Pragma 'pedantic' causes the compiler to treat
certain warnings as errors. Pragma 'sloppy' (the default
setting) turns the pedantic behaviour off.
- (prolang.y, simulate) parse_error(), and with it the master
lfun log_error() received a flag argument 'warn', which is
set if the passed message is a warning, not an error.
16-May-2000 (Lars Duening) (3.2.8-dev.200)
- (prolang.y) Added functions yywarn() and yywarnf() to print
warnings during the compile. They act like yyerror() except
that they don't count up parse errors.
- (prolang.y) Failure to pass enough arguments to a non-varargs
simul_efun generates a warning. I'd like to make it an error,
but then a lot of mudlibs would be unhappy.
14-May-2000 (Lars Duening) (3.2.8-dev.199)
- (ed.c) Removed an endless loop in ed_buffer_size().
08-May-2000 (Lars Duening)
- (func_spec) Efun apply() was still listed with two arguments
where only one is actually required.
- (comm.c) Removed a warning.
07-May-2000 (Lars Duening) (3.2.8-dev.198)
- (util/xerq/socket.c) In flush_queue(), the loop pointers weren't
advanced after removing a queue element.
- (doc/efun/symbol_variable) Clarified the functionality.
- (interpret.c) Efun apply(), like efun funcall(), just returns
the first argument if it is not a closure.
- (func_spec) Efun typeof() can now accepts literal references.
- (array.c) Efun transpose_array() handles mixed size subarrays
better.
- (lex.c, interpret.c, simulate.c, object.c, prolang.y) More tweaks
to the memory statistic.
- (stralloc.c) Corrected the memory statistics.
07-May-2000 (Lars Duening) (3.2.8-dev.197)
- (smalloc.c, comm.c, simulate.c) Added a few more memory statistics.
Some memory uses are still unaccounted for, including the memory
used for mallocated strings.
05-May-2000 (Lars Duening)
- (smalloc.c, efuns.c) Corrected the smalloc memory stat to count
and list the wasted memory fragments. Adapted the efun debug_info()
to return this information. Also safeguarded the dump_malloc_data()
function against allocations during this function (this lead to
confusing data).
- (lex, simulate.c) Added an output of the lexer structures to 'status'.
30-Apr-2000 (Lars Duening) (3.2.8-dev.196)
- (actions.c) Corrected the cleanup code in execute_command() to
handle the situation if the command giver is destructed during
the command. (b-000207-3)
- (lex.c) By Matthew Julius: added the preprocessor macros __DIR__
and __PATH__(). (f-990203-08)
- (main.c) Corrected a few typos in the help texts.
- (prolang.y) Corrected the type tracking when compiling the
'+' operator.
- (prolang.y) '(void)' is now accepted as empty function argument
list.
27-Apr-2000 (Lars Duening)
- (hosts/be) Adapted the BeOS port to R5.
21-Apr-2000 (Lars Duening) (3.2.8-dev.195)
- (prolang.y) Added the change required by bison.
20-Apr-2000 (Lars Duening) (3.2.9-dev.194)
- (prolang.y) Local variables can now be initialized in the
definition.
- (random.c) Another small tweak.
19-Apr-2000 (Lars Duening) (3.2.8-dev.193)
- (configure.in, configure) Oops #2, the '--with-malloc' was
applied wrongly to the config.h
- (random.c) Improved the handling of large ranges.
- (gcollect.c) Multiple references to a memblock no longer fatal()
the driver, but instead print a diagnostic.
18-Apr-2000 (Lars Duening) (3.2.8-dev.192)
- (configure.in, configure) Oops, the '--with-malloc' was not
really applied to the config.h
- (util/xerq) Added a missing variable initialisation, and corrected
the num_fd computation for select(). (thanks, Michael!)
- (settings/forgottendreams) The name of the settings file should
be used by the file itself, hm?
17-Apr-2000 (Lars Duening) (3.2.8-dev.191)
- (random.c) Improved the fitting of the raw random number into
the given range. The key is not to use the '%' operator, as
the low-order bits are distressingly non-random. (b-990217-3)
- (settings/unitopia) Updated.
- (settings/forgottendreams) Added.
- (smalloc.c) Increased the max size of a small block to 128 Bytes.
This value used to crash Unitopia, but probably only because
the tables weren't fully initialised. This has been corrected,
and with Unitopia's new system the crash vanished anyway.
- (array.c, backend.c, closure.c, comm.c, efuns.c, prolang.y, object.c,
ptrtable.c, simulate.c stralloc.c, strfuns.c, sprintf.c, xalloc.h)
Removed a number of warnings. (thanks, Freaky!)
- (util/(x)erq/erq.c) Correct the time_stamp() function.
- (util/xerq/socket.c) Corrected a type which clobbered the TCP
functionality. (thanks, Michael!)
- (pkg/mysql/sql.diff) Updated. (thanks, Michael!)
- (object.c) Got rid of the fragile 'old_format' variable; instead
format parse decisions use the read version value directly.
- (interpret.c) <mapping1> -= <mapping2> now works for <mapping2>
of any width, like the normal subtraction already does.
16-Apr-2000 (Lars Duening) (3.2.8-dev.190)
- (lotsa files) Improved to 'out of memory' error messages to state
how much memory was needed for what.
16-Apr-2000 (Lars Duening) (3.2.8-dev.189)
- (array.ch, interpret.c) Array sizes are listed verbatim in the
array structure.
- (smalloc.c) Small improvements to the aligned allocations.
15-Apr-2000 (Lars Duening) (3.2.8-dev.188)
- (doc/driver/codestyle) First version.
- (xalloc.ch) New 'standardised' memory allocator module: it simply
includes the source for whatever allocator was selected.
As a side effect, the makefile no longer needs to know
which allocator to use - the define moved into config.h .
- (smalloc.ch, driver.h) Simplified the compilation of smalloc:
the functions are now compiled as they are, and stubs are
provided for the emulation of the clib functions if
possible.
- (other files) Adapted to the new memory allocator compilation,
reducing the number of dependencies on MALLOC_smalloc.
Especially: the GC support is now tied to the macro GC_SUPPORT,
SMALLOC_(LPC_)TRACE has been renamed to MALLOC_(LPC_)TRACE,
and array always store their size with the vector structure.
- (configuration) The selection of the memory allocator can now
be done with the '--with-malloc=<value>' option of configure.
15-Apr-2000 (Lars Duening) (3.2.8-dev.187)
- (prolang.y, exec.h) Extended the bugfix from yesterday so that
inherited functions are lookup up using a proper breadth search.
14-Apr-2000 (Lars Duening) (3.2.8-dev.186)
- (prolang.y, exec.h) The compiler now keeps track which inherits
happened at the top level. When looking for a ::function() to
call, it searches until it either finds the function defined
in a first level inherit, or it takes the first definition
found on any other level. (b-000207-4, b-000411-1)
- (lex.c) Added new pragma 'weak_types' to counter the effects
of a pragma 'strict_types'. (b-000208-1)
13-Apr-2000 (Lars Duening) (3.2.8-dev.185)
- (actions.c) If the notify_fail() is a closure, it is made sure
that it won't be freed while it is executing (thanks, Gnomi!)
- (erq, xerq) The time_stamp() tried to use the driver's
get_current_time() instead of the proper time().
- (configure.in) Improved the recognition of unsupported
compiler options.
11-Apr-2000 (Lars Duening) (3.2.8-dev.184)
- (comm.c) Corrected an endless loop in lookup_ip_entry()
(thanks, Freaky!)
- (hosts/unix.h) When compiling with gcc on Amiga, the
symbol AMIGA is made undefined.
07-Apr-2000 (Lars Duening) (3.2.8-dev.183)
- (gcollect.c) Found another void-function casted to a value, this
time it's writed().
- (smalloc.c) Increasing the SMALL_BLOCK_SIZE to 32 caused
crashes in UNItopia, manifesting themselves in garbage
stack data. Reduced it back to 8.
- (settings/eotl) Updated.
- (object.c) Corrected the versoin detection in restore_object() -
the logic was reversed, but happened to work for the
current generation of savefiles. (Thanks, Casey!)
06-Apr-2000 (Lars Duening) (3.2.8-dev.182)
- (gcollect.c) Casting a the void returning function fatal()
to a value returning function caused the AIX-xlc code
generator to crash on high optimization levels.
- (lots of files) Adapted for compilation on AIX 3.4 using xlc.
Some of these changes may break the adaption previously done
by Uwe, but now at least I have a base to work from on.
06-Apr-2000 (Lars Duening) (3.2.8-dev.181)
- (lex.c, prolang.y, main.c, settings/*, configure)
The keyword 'nosave' is now optional, controlled by the setting
parameter 'enable-lpc-nosave'.
05-Apr-2000 (Lars Duening)
- (closure.c) Forgot to remove two leftover DEBUG printfs
(thanks, Coogan!).
- (object.c) Corrected one error message. (thanks, Casey!)
- (comm.c) Added Lynx' optimization for the iptable[] IP
address lookup. Main advantage is that it scales better
to large numbers of users. (thanks!)
04-Apr-2000 (Lars Duening) (3.2.8-dev.180)
- (pkg/mysql) Coogan provided the updated source files - thanks!
- (INSTALL) BeOS: Added a paragraph about the etc/hosts file.
- (settings/eotl) Added the settings for End of the Line (thanks,
Casey!).
- (util/erq, util/xerq) Added timestamps plus nametag to the
diagnostics of the erq demons.
03-Apr-2000 (Lars Duening) (3.2.8-dev.179)
- (array.c) Freaky was correct: sort_array() no longer made a copy
of the incoming array *Mateese blushes deeply*. (b-000106-3)
- (sprintf.c) Trailing pad space is not added if a newline
follows directly afterwards.
02-Apr-2000 (Lars Duening) (3.2.8-dev.178)
- (stralloc.c) Increased the hashed length from 20 chars to 100.
- (smalloc.c) Increased the number of small block sizes from 8
to 32, that is: the max small block size from 32 to 128 Bytes.
- (*.h) Removed the leading '_' from the include guards as these
are reserved for system defines.
- (interpret.c, prolang.y, swap.c) Removed pointer-mismatches
(for example char* vs. unsigned char*).
- (port.c) Implemented time_stamp() using strftime().
30-Mar-2000 (Lars Duening) (3.2.8-dev.177)
- (func_spec, prolang.y, lex.c, interpret.c, closure.c, sprintf.c)
Two new bytecodes F_NX_RANGE/F_RX_RANGE (and their lvalue
counterparts) implement the constructs [x..] and [<x..]. The
former solution of abusing other bytecodes when these constructs
were used in a closure was too unstable. (b-000106-1)
29-Mar-2000 (Lars Duening)
- (sprintf.c) Change the implementation so that the efun (s)printf()
are now re-entrant.
27-Mar-2000 (Lars Duening) (3.2.8-dev.176)
- (prolang.y) If the declaration of a new local variable in an
lvalue context (foreach()) shadowed a global identifier, the
lvalue was computed for the global identifier. And that
meant random memory accesses! (b-000221-3, b-000105-2)
- (simulate.c) execute_callback(): if an apply() fails, the
apply_return_value is now properly set to 0. (b-000113-1)
- (interpret.c, prolang.c) It is now made sure that no function
is passed more than 255 arguments (the maximum which can
be encoded in just one byte). (b-991220)
- (simulate, smalloc.c) Removed the MALLOC_STAT statistic.
26-Mar-2000 (Lars Duening) (3.2.8-dev.175)
- (actions.c) remove_action_sent(): Removed a segfault in the
DEBUG code (of all things). Thanks, Casey!
- (sprintf.c) (s)printf() didn't add padding if no
data was following the format field. This is probably a space-
saving feature, but seriously hinders some formatting tasks.
(b-000228, b-000306-5)
- (closure.c) symbol_efun(), and with it efun symbol_function(),
didn't know about #'foreach. Oops. (b-000228-3)
- (closure.c) compile_value(): #'++ was accidentally compiled
as #'--. (b-000228-4)
- (lex.c) The variable pragma_no_shadow wasn't initialized
before a new compile. (b-000103)
25-Mar-2000 (Lars Duening)
- (prolang.y) Added two %type statements which allow the use of
bison instead of byacc. (p-000205)
- (efuns.c) Efun terminal_colour() didn't handle well the combination
of indentation and forced wrapping in the middle of a word.
(b-000217-2)
- (main.c, simulate.c) Added a 'vdebug_message()' as companion to
'debug_message()', taking a va_list argument instead of the
printf() style varargs. It's needed for a proper implementation
of fatal() (I'm amazed that it didn't crash earlier).
23-Mar-2000 (Lars Duening) (3.2.8-dev.174)
- (object.c) restore_value()/restore_object() modify the value
string, which is desastrous if it's a volatile or shared
string. (b-000212-1)
- (doc/efun/strstr) Documented the negative start indices. (b-000106-2)
- (doc/efun/sort_array) Made clear that the argument array
is sorted in-place. (b-000106-3)
22-Mar-2000 (Lars Duening) (3.2.8-dev.173)
- (interpret.c) call_others on arrays crashed with empty arrays,
and failed to handle 0s gracefully. The crasher was caused
by a premature optimization of the algorithm... (b-000221).
- (closure.c) Compiling a #'foreach, <sym-array> construct didn't
check if the sym-array is non-empty (b-000228-2).
21-Mar-2000 (Lars Duening) (3.2.8-dev.172)
- (actions.c) When execute_command() called privilege_violation4(),
it passed sp+1 instead of sp as the stackpointer to use. This
lead inter_sp pointing to an uninitialized stack entry if the
privilege was denied, causing a fandango on the core. (b-000110-2)
- (interpret.c) set_bit(), clear_bit(), test_bit() did not check
if the given bit number might be negative. (b-000112)
20-Mar-2000 (Lars Duening) (3.2.8-dev.171)
- (actions.c) Revisited the 64-Bit issue and removed all casts.
- (actions.c, mudlib/sys/commands.h, doc/efun/add_action)
Corrected the behaviour of add_action() so that it is backwards
compatible again. Added symbolic defines for the flags accepted
by add_action(). Improved the manpage to include examples of how
the flags affect the command parsing. (thanks, Freaky!) (b-991230)
10-Mar-2000 (Lars Duening) (3.2.8-dev.170)
- (actions.c) Corrected a possible 64-Bit issue: a cast from (p_int)
down to (int) might have lost bits while handling an address.
- (prolang.y, lex.c) The modifier 'nosave' for variables takes
over the meaning of 'static' - the latter is still recognized
for variables, but its use is deprecated. Similar, 'nosave'
should be used instead of 'static' as inheritance
modifier.
09-Mar-2000 (Lars Duening) (3.2.8-dev.169)
- (lex.c) Added the name of the macro to certain error messages
issued during expansion. This also required a new function
lexerrorf() with obvious purpose.
06-Mar-2000 (Lars Duening) (3.2.8-dev.168)
- (doc/efun/closure_guide) Removed Tubmud'isms.
- (bugs/...) New bug reports, and the EotL patches.
04-Mar-2000 (Lars Duening) (3.2.8-dev.167)
- (interpret.c, doc/efun/tell_room) Doc corrections.
- (interpret.c) f_traceprefix called master::valid_trace() with
"trace" instead of "traceprefix".
- (doc/efun/call_out) Corrections.
- (bugs/...) Added all the bug reports since .164.
01-Mar-2000 (Lars Duening) (3.2.8-dev.166)
- (make_func.y, exec.h, backend.c, parse.c) Removed warnings.
01-Mar-2000 (Lars Duening) (3.2.8-dev.165)
- All the prvious changes since .141 are back under PRCS control.
- (hosts/be/Makefile) The dependencies on generated files
like stdstrings.h are now generated automatically as well
(requires MkDepend 1.6).
17-Dec-1999 (Lars Duening) (3.2.8-dev.164)
- (mapping.c) The callbacks for map(mapping) and filter(mapping)
were told about more arguments than actually existing on
the stack. Very stupid, but it took the Evermore lib to
find this one. (thanks, Bardioc!)
16-Dec-1999 (Lars Duening) (3.2.8-dev.163)
- (simulate.c) And of course the difference between toplevel and
normal callbacks also includes the current_object :-(
- (prolang.y) Typechecking for pre-increment/decrement on indexed
values stumbled over mixed arrays. (thanks, DiEHARD).
15-Dec-1999 (Lars Duening)
- (comm.c) Recognition of a quoted IAC in the input forgot to
change the state back to TS_DATA.
- (simulate.c) Freeing callbacks with just one arg used the wrong
pointer and crashed. (thanks, Freaky!)
- (simulate, array.c, comm.c, call_out.c, mapping.c) Argh - I
have to distinguish if a callback is called from the toplevel
(current_prog is invalid) or from a program (current_prog is
valid). (thanks, Freaky!)
14-Dec-1999 (Lars Duening) (3.2.8-dev.162)
- (pkg/mysql) Corrected a number of crashers (thanks, Bastian!)
and added the HOWTO by Karm.
- (actions.c) The recent changes activated a bit of legacy code,
which started passing the verb as part of the argument string
to NO_SPACE commands. *sigh* (thanks, Daryth!)
- (simulate, call_out.c, comm.c) The callbacks can now accept
lvalues as arguments.
Also the index returned for faulty arguments was one too
high. (thanks, Zwirch!)
- (array.c) If setting up an efun callback generates an argument
error, the proper, lower stack pointer is returned. (thanks,
Zwirch)
- (interpret.c) apply() on efun-, sefun- and operator-closures
didn't properly check the number of arguments. This wasn't
detected earlier because the related code has hardly ever
been executed. (thanks, Zwirch!)
- (comm.c) The driver telnet negotiations understands quoted
IACs now. (thanks, Amylaar!)
13-Dec-1999 (Lars Duening)
- (func_spec, array.c) Efun map() can now map an array through
a mapping; similar to how filter() works.
- (prolang.y) Indexing [..x] and [..<x] are allowed as short form
of [0..x] and [0..<x]. (f-990419)
- (prolang.y) Moved the parsing and compilation of the various indexing
forms into two dedicated rules - this greatly simplified all
the other rules which involve indexing (yes: for once a file
became shorter :-).
- (func_spec, prolang.y, interpret.c, closure.c, sprintf.c) The
ranges [x..] and [<x..] are now mapped onto [x..<1] resp. [<x..<1];
this removes the need for F_EXTRACT2 for everything but the
efun extract(). F_(PROTECTED_)EXTRACT_LVALUE are gone, too.
- (sprintf.c) Made '%O' a bit more knowledgable about the various
lvalues, but without the interpret.c-internal datastructures
the printed data is just an approximation.
12-Dec-1999 (Lars Duening) (3.2.8-dev.161)
- (array, interpret) Removed a few compilation problems.
- (ed.c) If a file can't be read on editor start, the full
message is printed.
12-Dec-1999 (Lars Duening) (3.2.8-dev.160)
- (array, simulate, mapping, interpret.c) Modified the map_() and
filter_() efuns, also sort_array() and walk_mapping(), to use
the recently introduced callback_t for their implementation.
This not only simplified the code (especially in array.c), but
also introduces a standard way how callbacks are specified in
such efuns.
11-Dec-1999 (Lars Duening)
- (actions.c, sent.h) Implemented the "short verb" usage of
efun add_action().
- (sent.h, ed) Completed the documentation of sentences.
- (sent.h, comm, simulate, other files) The interactive_t is no longer
a subclass of shadow_t; instead the latter now acts as generic
"attribute" sentence for an object, linking to an independent
interactive_t for interactive users. This makes handling interactive
connections somewhat simpler.
10-Dec-1999 (Lars Duening)
- (actions, gcollect.c) The garbage collector did not trace the
globals of actions.c under the faulty impression that they are
valid only during a command execution. However, e.g. notify_fail()
can be used outside of a command, which led to used memory being
deallocated in the GC. From there, the damage continued to spread.
(at least part of b-991123-1)
- (doc/LPC/functions) Rewritten to cover all the new features introduced
since LPmud 2.4.5.
- (interpret.c) Added check for stack overflow in the eval loop - code
like funcall(lambda(0, ({ #'({ })+({1})*10000)) could otherwise
easily crash the driver. (thanks, Zwirch!)
09-Dec-1999 (Lars Duening)
- (Makefile.in, hosts/*/Makefiles) The manual dependencies for instrs.h
were out of date. (reported by Freaky and Anders - thanks!)
- (port.c) The current time_stamp() implementation omitted leading
zeroes in the day field. (thanks, Freaky!)
08-Dec-1999 (Lars Duening) (3.2.8-dev.159)
- (closure, gcollect.c, interpret.c) The closure compile did not
handle lambdas with more than 254 constants properly: the
number of values was consistently stored in the wrong place.
A classic off-by-one, caused by the indexing from the end.
(thanks, Zora!)
07-Dec-1999 (Lars Duening)
- (pkg/mysql/) Small corrections.
06-Dec-1999 (Lars Duening)
- (mud/lp-245/obj/master.c, .../simul_efun.c) valid_write() and
valid_snoop() didn't work well with plain drivers due to the
reliance on file_name(). The master now has its own file_name().
(thanks, Andy!)
- (string_spec, make_func.y, Makefiles, sources) Tired of updated
stralloc.* in three places for every change in the common
strings table, I now define all these strings in string_spec
and modified make_func to generate stdstrings.[ch] from these.
- (interpret.c) Efun get_type_info(cl, 2) did not return the
object for closure <cl> if <cl> was a lambda or bound lambda.
(thanks, Freaky!)
05-Dec-1999 (Lars Duening)
- (interpret.c, comm.c, simulate.c, object.c) Cosmetics.
- (settings/dt2, mud/dt2/...) Created the Deeper Trouble II adaption
from the old 3.2.1@141 diffs. It compiles and seems to work,
but without the mudlib I can't tell for sure.
03-Dec-1999 (Lars Duening) (3.2.8-dev.158)
- (interpret.c) Efun query_input_pending() deref'd the wrong object,
causing a nice crash. (thanks, Michael!)
01-Dec-1999 (Lars Duening)
- (doc/efun/inherit_file) Corrected typos (thanks, Freaky!).
- (doc/efun/[]) Accidentally got lost in the last snapshot.
- (interpret.c) Removed a sneaky memory leak in transfer_pointer_range().
(thanks, Michael!)
- (func_spec) Efun functionlist() was specified to return "string*"
instead of the correct "mixed*". (thanks, Freaky!)
- (interpret.c) Improved the error messages of F_MAP_INDEX.
29-Nov-1999 (Lars Duening)
- (func_spec, comm) New efun "set_combine_charset()" to combine
characters received in charmode into strings. (f-991126-0)
- (func_spec, comm.c) Efun "set_connection_charset()" now also
accepts a string as charset specificator.
27-Nov-1999 (Lars Duening) (3.2.8-dev.157)
- (port.h) A tentative change of VAR_PROT() and VARPROT() for AIX.
- (prolang.h, prolang.y) struct s_lrvalue is now defined twice in
prolang.y, to be able to cope with a wider variety of yaccs
(especially the AIX yacc).
- (util/xerq/(erq.c, socket.c)) Forgot to change two "struct queue_s"
to "struct equeue_s".
- (stralloc.c) string_dinfo_data() used an uninitialized variable.
26-Nov-1999 (Lars Duening)
- (stralloc, gcollect.c, main, backend.c, Makefiles) When compiling
with DEBUG and CHECK_STRINGS: The structures of the shared
string table are shadows in a second table, and every string
access checks the consistency of the structures. Additionally,
with the commandline option "--check-strings" the whole string
table is checked with every backend cycle.
25-Nov-1999 (Lars Duening)
The following three changes should correct b-990430, which might have
caused b-991123-0 and b-991123-1 in turn.
- (comm.c) When accepting a line of non-negotiation text in charmode,
interactive_t.tn_start became negative after the second char.
Similar if an error occured during a very long line - here
set_noecho() used wrong indices.
- (comm.c) Charmode: when a client sent single CRs and there were no
negotiations on the same line, the CR was re-read (almost)
endlessly.
- (comm.c) Should the telnet machine receive too much data, the program
now makes sure that .command_end won't fall under .tn_start resp.
.command_start.
24-Nov-1999 (Lars Duening)
- (main.c) Commandline option "--check-refcounts" was mistakenly
marked to accept a value.
23-Nov-1999 (Lars Duening)
- (actions.c, backend.c, call_out.c, comm.c, ed.c, gcollect.c,
interpret.c, lex.c, main.c, mapping.c, object.c, prolang.y,
simul_efun.c, simulate.c, stralloc.c, swap.c, wiz_list.c)
Added the timestamp to the diagnostics. error() and fatal()
calls automatically log the timestamp. The whole situation
of what is logged where when is still a mess :-(
- (comm.c) Ups, call_function_interactive() forgot to remove
its (stack located) error recovery context from the context
stack. And it hid the leading "!" when falling through to
IGNORE_BANG handlers. (thanks, Freaky!)
- (prolang.y, stralloc) New master-apply "inherit_file()" to check
and generated the full filename from an inherit statement.
(suggested by Freaky) (f-990323-0)
- (interpret.c) free_interpreter_temporaries() now also removes
all destructed objects from the code trace (obviously only
when compiled with TRACE_CODE). Since this function is called
only from the GC, it has no further sideeffects.
22-Nov-1999 (Lars Duening)
- (sprintf.c) sprintf("%O", object) in plain mode prints the object
name with a leading "/". (thanks, Freaky!)
- (lex.c) Master apply include_file() now receives the object filename
in !compat with a leading slash; of the result, leading slashes
are ignored. Also removed a typo. (thanks, Freaky!)
- (simulate.c) Efun limited() did not give the closure the full
amount of eval ticks are requested in the call. (thanks, Freaky!)
- (mapping.c) Corrected the error handling in filter_mapping() and
map_mapping(), which are used for the filter()/filter_indices()
efuns and their map_() counterparts. (thanks, Robert!)
- (port) New function time_stamp() for use in the creation of
error and driver log messages.
21-Nov-1999 (Lars Duening)
- (simulate, gcollect.c, comm, call_out.c) Introduced the "callback"
structure, to be used for input_to()s and call_out()s. call_out.c
became really simple :-)
20-Nov-1999 (Lars Duening)
- (autoconf/configure.in, configure, port.h) Small tweaks.
- (interpret.c) Correction to sort_array(): the GET_NUM_ARG occured
too late.
19-Nov-1999 (Lars Duening) (3.2.8-dev.156)
- (efuns.c, simulate.c, swap) Added new debug_info() request DINFO_DATA:
DID_SWAP to retrieve the data usually printed as "status swap".
- (efuns.c, smalloc) Added new debug_info() request DINFO_DATA:
DID_MEMORY to retrieve the data usually printed as "status malloc".
- (typedefs.h) Just a definition of strbuf_t was missing.
18-Nov-1999 (Lars Duening)
- (comm.c, autoconf/configure.in, autoconf/acconfig.h, machine.h.in)
Added tests if F_SETOWN and SO_OOBINLINE are actually supported
by the operating system.
- (port.c, autoconf/configure.in, config.h.in, settings/{default,osb})
Added the configuration option USE_SYSTEM_CRYPT. This solves
the problem for OSB that the existing password files which have
been created with IRIX' crypt() are invalid under HP-UX's crypt().
- (efuns.c, simulate, otable, call_out, heartbeat, stralloc, rxcache)
Added new debug_info() requests DINFO_DATA, and implemented
the first sub-request DID_STATUS.
17-Nov-1999 (Lars Duening)
- (make_func.y, lex.c, efuns.c, util/xerq) Removed a few warnings when
compiling under Solaris (some remain and are caused by the
system headers); also changed the queue_t type in xerq to equeue_t
because of a clash with the Solaris queue_t type.
- (port.h, autoconf/configure.in, autoconf/acconfig.h, machine.h.in)
Added a test for ssize_t.
- (erq.c, xerq/lookup.c) Added two fixes provided by Uwe (thanks!).
16-Nov-1999 (Lars Duening)
- (comm.c, settings/osb) Removed a few warnings when compiling under
HP-UX; and the normal erq still doesn't compile there (but xerq
does).
- (func_spec, array, interpret.c) The efun sort_array() now accepts
extra arguments to be passed to the comparison function.
(suggested by Robert from Unholy Lands).
15-Nov-1999 (Lars Duening)
- (strfuns.h) Changed "ulong" to "u_long", which should be the
standard.
- (mempools) Added an include of <sys/types.h> for ssize_t.
- (settings/tubmud) Corrected some settings from "<foo>=<value>"
to the correct "with_<foo>=<value>". (thanks, Coogan!)
- (interpret.c) When apply() expanded an array, it didn't check
the elements for destructed objects. (thanks, Coogan!)
- (interpret.c) Before calling a vefun, inter_sp and inter_pc
are updated. (thanks, Michael!)
- (lex.c) Corrected an off-by-one error in the linenumbers
of an inline closure. (thanks, Michael!)
- (array.c, efuns.c, exec.h, interpret.c, prolang.y) The various
inherit types are now distinguished by a proper "inherit_type"
field in the inherit_t structure; as opposed to the former
"is_extra" flag. (provided by Michael)
14-Nov-1999 (Lars Duening)
- (smalloc.c) Added first hooks for use of madvise().
- (mud/anders) Added the diffs and extra files for the patched
3.2.1@141 driver of Deeper Trouble 2.
- (interpret.c) A return from within a foreach() crashed because
foreach's hidden "variables" messed up the stack check
in F_RETURN. (thanks, Bardioc!)
11-Nov-1999 (Lars Duening) (3.2.8-dev.155)
- (prolang.y, interpret.c, strfuns, make_func.y) The operators "&"
and "-" (and their assignment variants "&=" and "-=") may now
be applied on strings.
- (comm.c) Arguments passed to an input_to() haven't been checked
for destructed objects. (thanks, Anders!)
- (lex.c, stralloc) News master apply include_file() to generate
the full pathnames of files specified in #include directives.
10-Nov-1999 (Lars Duening)
- (mud/sticklib/) Updated the diff files.
09-Nov-1999 (Lars Duening)
- (bugs/p-990901) Updated the catch_no_log() patch. (thanks, Michael!)
- (array.c) unique_array() on an empty array crashed. (thanks, Ralph!)
08-Nov-1999 (Lars Duening)
- (simulate.c) Oops, "rename_to" has been written "rename_tp".
(thanks, Elric!)
- (gcollect.c) Added some DEBUG: printfs to check if the objects
are counted properly.
- (prolang.y) "*"::foo() now succeeds if at least one inherited
object contains this function.
- (prolang.y) The name table in get_type_name() was still incorrect.
(thanks, Michael!)
07-Nov-1999 (Lars Duening)
- (settings/default, unitopia) Updated the unitopia settings, and
commented the max. hashtable values.
- (object.c, closure.c, parse.c, sprintf.c) Removed a couple of compiler
warnings.
- (prolang.y, closure.c, switch.h) Removed a memory leak in the
compilation of top-level switch() statements.
05-Nov-1999 (Lars Duening) (3.2.8-dev.154)
- (regexp.c) In one place, FALSE was returned instead of TRUE,
making regexp()/regreplace() unfunctional (thanks, Zwirch!).
- (main, gcollect.c) writex() renamed to write_x() to avoid
a clash with AIX' writex().
- (prolang) Some more AIX adaptions: struct s_lrvalue has to
be defined after the rules (to be precise: after %union),
and yyerrorf() has to use VAR_PROT() in the prototype.
- (pkg/mysql) Added new efun db_handles() (provided by Karm).
- (strfuns.h, smalloc.c) Added the necessary changes to compile
under FreeBSD (thanks, Elric!).
- (configure.in, configure) Took out the test for "-xO2" and "-xO4".
It gave wrong results under FreeBSD, and doesn't seem to be useful
anyway.
04-Nov-1999 (Lars Duening)
- (configure) Updated it with the script created on Solaris
from the configure.in.
- (mudlib/dhrystone.c) Added Hyp's Dhrystone implementation for
test purposes (486/33MHz/Cygwin: 6.7 Dhry/s).
- (port, main.c) Cygwin's rusage() only returns 0s, so I replaced
it with the simulation also used for Amiga - this way we
at least get some time information.
- (prolang.y) "#'f == string" crashed on printing an error message
due to a lacking typename for the #'symbol.
- (closure.c) Numbers bigger than 255 in closures weren't compiled.
03-Nov-1999 (Lars Duening)
- (doc/LPC/foreach) Improved the documentation a bit.
- (make_func.y) Since Solaris doesn't know stricmp() either, and
since on Cygwin it is just a define to strcasecmp(), I just
changed my two uses of stricmp() to strcasecmp().
02-Nov-1999 (Lars Duening)
- (prolang.y) Added "foreach(x in y)" as alternative to
"foreach(x : y)" - without making "in" a reserved word.
- (interpret.c) When confronted with negative starting offsets,
strstr() returned invalid results.
01-Nov-1999 (Lars Duening) (3.2.8-dev.153)
- (efuns.c) terminal_colour() stumbled over strings starting with
a keyword.
- (closure.c) The branch-rewriting was broken in @142 - using an
invalidated variable, and rewriting only two of three branch
types weren't good ideas at all.
- (lex.c, prolang.y) Replaced the 'in' keyword in foreach()
by ':' - mudlibs already use 'in' as variable name :-(
31-Oct-1999 (Lars Duening)
- (erq.c) Small fix in the IPv6 rlookup, provided by Uwe.
- (prolang.y) Cleaned up the lvalue rules for variables a bit, and
also removed the "dangling else" shift/reduce conflict.
- (func_spec, lex.c, prolang.y, interpret.c, closure.c) Implemented
the foreach() loop construct. (f-981229-18)
29-Oct-1999 (Lars Duening)
- (closure.c) An include of stddef.h was missing here, too.
- (backend.c) In non-DEBUG mode, the interactive player wasn't set
in the backend loop. (thanks, Heiko!)
- (lex, prolang.y, simulate.c, exec.h) New program flag P_NO_SHADOW,
set by the new #pragma no_shadow, disables shadowing for a
program (suggested by Holger).
- (efuns.c) Efuns debug_info()/object_info(), xINFO_MEMORY: also print
resp. return the datasize of the object. (suggested by Freaky)
- (sprintf.c) Multiples of 10 were printed without the leading digit.
- (simulate.c) Efun rename(): the two valid_write() calls are now passed
the operation codes "rename_from" and "rename_to" instead of
"do_rename" twice. (suggested by Freaky)
- (interpret.c, func_spec) call_other() now accepts arrays of objects
and returns the call results in another array.
28-Oct-1999 (Lars Duening)
- (settings/evermore) Added.
- (make_func.y) Linux doesn't know stricmp(), but strcasecmp(). Added
ad-hoc define for that.
- (swap.c) Added missing include stddef.h.
- (Makefile.in) The high WARN setting for gcc defined -Wno-parentheses
instead of -Wparentheses.
- (doc/LPC/pragma) The pragmas no_clone and no_inherit weren't
documented.
- (smalloc.h, interpret.c) Added braces around ambigouous if-elses.
- (exec.h, prolang.y, lex.c, interpret.c) Runtime errors within inline
closures were reported with wrong line numbers. Reason is that
the normal store_line_number_info() expects line numbers to
increase and therefore ignore the #line directives used with
inline closures. Solution was to add a new LI_BACK linenumber
code plus creation function to decrement the current line counter.
(thanks, Zwirch!)
27-Oct-1999 (Lars Duening) (3.2.8-dev.152)
- (xerq/erq.c) The global variable "sockets" was not initialized.
26-Oct-1999 (Lars Duening)
- (interpret.c) In call_lambda(): moved the checks for destructed
objects to the beginning.
- (comm.c) If after an ERQ call back the object is found to be
destructed, the callback is removed even if the ERQ sent
a KEEP_HANDLE reply.
- (regexp, rxcache, array.c, backend.c, ed) Regular expressions
used from outside ed() throw errors instead of printing
error messages. (b-990523)
- (actions, func_spec) Efuns query_notify_fail(), command_stack():
the information, which object did the last notify_fail(), is
now stored and accessible. (f-990217-2)
- (access_check.c, lex.c, smalloc.c, wiz_list.c, hosts/amiga/dice30.diff)
Just for fun, and because most of the changes had been done already:
applied the remaining Amiga-diffs to the main sources.
25-Oct-1999 (Lars Duening)
- (lex.c) Newlines in strings in (: :) closures are recognized
and rejected. (thanks, Zwirch!)
24-Oct-1999 (Lars Duening)
Only two months until Christmas!
- (pkg/mysql) Added the mySQL support provided by Karm (thanks!).
22-Oct-1999 (Lars Duening)
- (lex.c) Includes caused an offset-by-one for the linenumbers.
- (comm, gcollect.c, interpret.c) input_to()s now accept closures
for functions. (f-981229-21)
- (prolang.y) Improved the ->() operator: the function name may be
the same as a local variable, may be a string given as "ident"
or a string expression given as (<expr>). (b-991019-0, f-990510,
f-990605)
- (prolang.y, stralloc) ->() again: a call_other() simul-efun is
recognized.
- (exec.h) Removed TYPE_SPACE and TYPE_TERM - nothing used them.
21-Oct-1999 (Lars Duening) (3.2.8-dev.151)
- (prolang.y) If an object is inherited virtually multiple times,
a wildcarded super call ("*::") calls it only once. (b-990217-0)
20-Oct-1999 (Lars Duening)
- (prolang.y) In virtual inherits, the check for duplicate virtual
functions forgot the take the virtuality of the duplicate into
account. (part of b-981208-3)
- (prolang.y) A virtual inherit is ignored if the program in question
has been inherited virtually before. (part of b-981208-3)
- (prolang.y, interpret.c) Simulefun may now take "varargs" type
arguments (e.g. 'x (varargs mixed arg)'). (b-990113-0)
19-Oct-1999 (Lars Duening)
Worked through a handfull of reports submitted by Rodney.
- (doc/efun/say) Clarified the exclusion rules.
- (interpret.c) Efun printf(): prints to NPCs are now sent to
catch_tell().
- (efuns.c) Prompt-closures are protected against premature
deletion when replaced while they are executing.
- (svalue.h, interpret.c, prolang.y) New macro addref_closure() to easily
increment the refcount of a closure-svalue.
13-Oct-1999 (Lars Duening)
- (efuns.c) Efun terminal_colour(): when, during a wrap, spaces were
removed from a string, this fact was not considered in the
memory-access sanity checks. (b-991012-1)
12-Oct-1999 (Lars Duening)
- (comm.c) Added another IPv6 patch. (thanks, Uwe!)
- (erq, xerq) Added the ERQ_RLOOKUPV6 request supplied by Uwe (thanks!).
07-Oct-1999 (Lars Duening)
- (comm, backend.c, gcollect.c) input_to() are now be nested when
a command is executed from within an input_to(). This is not
a real stacked input system as outlined in f-990721-0.
06-Oct-1999 (Lars Duening)
- (swap.c) Corrected a small, but fatal omission of a cast.
05-Oct-1999 (Lars Duening) (3.2.8-dev.150)
- (efuns.c) Straightened the key recognition in efun terminal_colour().
- (object) Added member object_t.load_id to be able to distinguish between
objects created at the same time.
- (func_spec, efuns) New efun clones() to find the clones of an object.
(f-990203-00, f-990203-26)
04-Oct-1999 (Lars Duening)
- (make_func.y) %tefuns specified with 'void' parameters are
now recognized as vefuns. (b-990320-0)
- (make_func.y, comm.c, ed.c, lex.c, main.c, simulate.c, swap.c)
Use of MAXPATHLEN verified.
- (prolang.y) Implemented '++<map>[<x>,<y>]'. (b-990204-1)
- (func_spec, object) New efuns save_value() and restore_value()
to encode/decode values in strings. (f-981229-19)
- (func_spec, object) Extended the efuns save_object() and
restore_object() to save and restore directly to and from
a string. Maybe this should be put into separate efuns?
(f-990203-25)
03-Oct-1999 (Lars Duening) (3.2.8-dev.149)
- (util/xerq) Commented and beautified - now that was a nice
program to work on. I left the docs/ and lpc/ files alone,
for the moment, though.
- (prolang.y) The dummy code created for undefined functions was
not aligned even with ALIGN_FUNCTIONS - the other reason
for the crash in functionlist(). (b-990819-0, see
26-Sep-99 as well)
02-Oct-1999 (Lars Duening)
- (doc/util/erq, util/erq) Commented and beautified the erq a bit.
There could be done more, but I really know better things
to do. But note that somebody (probably the folks at TubMud)
has added the socket requests to the erq. (b-981212)
01-Oct-1999 (Lars Duening)
- (simulate, smalloc) Added a malloc statistic, which is dumped
into the file MALLOCSTAT with the special command "status mstat".
- (util/overhead.c) Commented.
- (util/fundesc.c, util/make_docs/) Removed - these were programs
for the original LPmud environment.
30-Sep-1999 (Lars Duening) (3.2.8-dev.148)
- (func_spec, simulate) New efun copy_file().
- (smalloc) Commented and beautified.
29-Sep-1999 (Lars Duening)
- (simulate, efuns, other files) Commented and beautified simulate.c;
moved and removed several pieces of code which didn't belong
there.
- (prolang.y) The compiler thought, "int * string" yields int - a
really silly typo (thanks, Michael!).
28-Sep-1999 (Lars Duening)
- (exec.h, closure.c, interpret.c, object.c, simul_efun.c, prolang.y)
Changed FUNCTION_NAME into FUNCTION_NAMEP to make sure
people (like me) don't use it directly (alignment!).
- (array.c) Corrected a mis-use of FUNCTION_NAME() which could lead
to Bus Errors due to misaligned data accesses (thanks, Sunblood!)
(b-990819-0, but see 03-Oct-99 as well)
- (sprintf) Commented, beautified, and two changes: formatting erros
now throw an error(), and recursive arrays/mappings are recognized.
27-Sep-1999 (Lars Duening)
- (swap) Commented and beautified.
- (stralloc) Commented and beautified.
26-Sep-1999 (Lars Duening) (3.2.8-dev.147)
- (simul_efun) Commented and beautified.
- (wiz_list) Commented and beautified.
25-Sep-1999 (Lars Duening)
- (interpret.c) Corrected a nasty crasher in the multiplication of
arrays of malloced strings (thanks, Michael!).
- (regexp) Beautified it, but didn't add many comments.
24-Sep-1999 (Lars Duening) (3.2.8-dev.146)
- (prolang.y, lex.c, closure.c) Added #'parse_command.
- (prolang.y) Corrected a rare problem with the code generated
for '&(expr[x])' and '&(expr[<x])'.
- (prolang.y, lex, make_func, lotsa files) Finally: the lexer/compiler
tokens no longer double as machine instructions. Not only this
simplifies include dependencies, it also gets rid of that
dreadful F_OFFSET (and '%instrs' is gone again, too).
*Lars bounces happily*.
- (make_func.y, Makefile) make_func now takes arguments determining
what to create. This greatly reduces compile times after changes
to the LPC compiler. See the source of make_func.y for more details.
23-Sep-1999 (Lars Duening)
- (prolang.y, exec.h, svalue.h) Commented and beautified the compiler.
21-Sep-1999 (Lars Duening)
- (array.c, doc/efun/functionlist) Clarified that efun functionlist() does
not load objects from a name, and improved the error message
for this case.
20-Sep-1999 (Lars Duening)
- (make_func.y) Added the numeric bytecodes to the created efun_defs.c
and intrs.h - helps with debugging sometimes.
- (make_func.y, func_spec, prolang.h, closure.c, dumpstat.c efuns.c,
gcollect.c, lex.c, array.c, interpret.c, swap.c, simul_efun.c,
sprintf.c)
Added a new func_spec-type '%instrs' to distinguish the instructions
used as tokens from those which aren't. This allows less files
to depend on lang.h .
19-Sep-1999 (Lars Duening) (3.2.8-dev.145)
- (parse.c, doc/efun/parse_command) Commented and ansified.
- (parse_old.c) Beautified, but only sparsely commented.
18-Sep-1999 (Lars Duening) (3.2.8-dev.144)
- (mudlib/lp-245/obj/simul_efunc.c) Adapted to the new definition
of inherit_list().
- (stralloc) Added the parse_command() lfuns as predefined
shared strings.
17-Sep-1999 (Lars Duening) (3.2.8-dev.144)
- (mudlib/sticklib) Adapted the interpret.c.diff.
- (prolang.y) Incorrect initialisation of local blocks in inline
closures sometimes generated illegal code (thanks, Michael!).
(also b-991026-1)
- (array.c, interpret, doc/efun/inherit_list) Efun inherit_list()
now prepends the returned program names with '/'es in non-compat
mode. (thanks, Michael!)
- (configure.in, configure) Corrected (I hope!) the tests for
inet_ntoa() and ipv6 support.
- (func_spec, interpret.c, doc/efun/) Efun load_name() also accepts
strings, following a suggestion by Coogan.
16-Sep-1999 (Lars Duening) (3.2.8-dev.143)
- (efuns.c) Documented process_string().
- (closure.c, mud/lp-245/obj/master.c) Corrected small errors.
15-Sep-1999 (Lars Duening)
- (efuns, parse, func_spec, interpret.c) Moved process_string()
into efuns.c and made it a tabled efun.
14-Sep-1999 (Lars Duening) (3.2.8-dev.142)
- (closure, doc/LPC/closures, svalue.h) Ansified and documented.
- (switch.h, prolang.y, typedefs.h) Beautified and documented the
data structures used for the switch().
- (exec.h) Added macros to generate code.
- (Makefile.in) The rule running make_func did not delete instrs.h
first.
- (configure.in, configure) Corrected the probing for optimization
options.
- (hosts/unix.h) Added an additional check for the newer Cygwin
packages (the old 'gethostname' problem).
- (strfuns.h) *sigh* ulong is not a standard type - we have to
clean that up later.
19-Aug-1999 (Lars Duening) (3.2.8-dev.141)
- (prolang.y) Forgot to change one 'struct lambda' into 'lambda_t'.
- (comm.c) Corrected a wrong if() condition in efun exec().
16-Aug-1999 (Lars Duening) (3.2.8-dev.140)
- (actions.c) Oops, the marker_sentence was not given a valid type.
15-Aug-1999 (Lars Duening)
- (gcollect.c, parse_old.c, parse.h) The {clear,count}_parse_refs()
functions exist in both new and old parse_command() *duh*.
- (Makefiles) Updated all dependencies.
14-Aug-1999 (Lars Duening) (3.2.8-dev.139)
- (my-alloca.h) Removed a declaration conflict on BeOS/PPC.
- (settings/avalon) Updated.
- (comm.c) Removed a compilation warning.
- (prolang.y) Redeclaration of local scopes inside of for() statements
did not recover gracefully.
- (lex.c) If the driver is compiled for IPv6, the macro __IPV6__ is
defined.
- (autoconf/configure.in, configure) Improved tests for IPv6.
13-Aug-1999 (Lars Duening) (3.2.8-dev.138)
- (sent.h, actions, simulate, other files) Beautified the sentence
handling.
- (mud/lp-245) Added mudwho-code and explanations for non-compat masters
to the obj/master.c
- (mudlib/) Removed the old master.c, simul_efun.c and room.h.
- (comm, port.h, autoconf/*) Integrated the AIX and experimental IPv6
support provided by Uwe (thanks!).
- (object.h) Forgot to include instrs.h even though part of the
struct object depends on F_SET_LIGHT *duh*.
12-Aug-1999 (Lars Duening) (3.2.8-dev.137)
- (svalue.h) Created from old datatypes.h.
- (typedefs.h) File holding the opaque definition of several globally
used types <foo>_t (which are shortcuts for the old 'struct <foo>'s);
mainly used to decouple the header files.
- (other files) Adapted to use the <foo>_t types.
12-Aug-1999 (Lars Duening) (3.2.8-dev.136)
- (strfuns) Increased the possible size of a strbuf from 2**16 to 2**32.
- (mempools, alloca.c, Makefiles) Added mempools: specialised allocators.
- (array.c, lex.c, ptrtable) Added uses of mempools where useful.
11-Aug-1999 (Lars Duening) (3.2.7-dev.135 == 3.2.7-pre.1)
- (lpmud.prj, patchlevel.h, hosts/be/Makefile) Introduced new source
branch '<v>-<r>-<p>.*' to hold the pre-releases during the shakedown
period before the 'official' release. Features and such in these
pre's are fixed, only fixes for final bugs take place.
09-Aug-1999 (Lars Duening)
- (mapping.c) Efun m_reallocate() returned the old (freed) mapping,
not the new one.
- (interpret.c) Before every bytecode evaluation, inter_sp and inter_cp
are updated.
- (pkg/ip6-aix) AIX/IPv6 package added.
04-Aug-1999 (Lars Duening) (3.2.7-dev.134)
- (util/xerq/) Corrected a couple of typos (I hate not being able
to compile this!) (thanks, Freaky!).
- (simulate.c) Cosmetic for 'status tables': the apply-cache stat
lacked a divider.
31-Jul-1999 (Lars Duening) (3.2.7-dev.133)
- (interpret.c) '*', '*=': inter_sp wasn't set properly before error()
was called. (thanks, Michael!)
- (array, swap.c) Swapping in an array ignores the current size limit.
(thanks, Michael!)
- (efuns.c) Efun terminal_colour(): the temporary buffer for the current
line is now potentially unlimited.
- (util/xerq/) Integrated patches from UNItopia, which remove a couple
of warnings and works around the repeated closing of sockets.
(thanks, Freaky!)
30-Jul-1999 (Lars Duening)
- (efuns.c) Efun trim(): forgot a check for the string end when trimming
left. This caused trim("") to core. (thanks, Freaky!)
30-Jul-1999 (Lars Duening) (3.2.7-dev.132)
- (gcollect.c) Oops, forgot to change two calls to free_vector() into
free_array(). (thanks, Freaky!)
- (interpret.c) Efun mkmapping() could have problem with oversized
arrays.
29-Jul-1999 (Lars Duening) (3.2.7-dev.131)
- (simulate.c) I am surprised nobody complained about this one: when
an error occured, the runtime stack was unrolled too early and
left the runtime_error() apply with no valid commandgiver.
- (func_spec, simulate) New efuns set_limits(), query_limits() and
limited() to handle runtime limits. (f-981229-11)
- (backend, main, simulate): array, mapping, and file transfer limits
are all settable from commandline and through the limit efuns.
- (interpret.c, efuns.c) Code for efuns like object_info()
now use the mudlib/sys/ includes to generated their results.
- (interpret.c, prolang.y) The '*' and '*=' operators now allow
to multiply strings/arrays with numbers.
28-Jul-1999 (Lars Duening)
- (lots of files) Removed trailing spaces.
- (main, backend, lex, interpret, simulate) eval_costs are now counting
up from 0 and are tested against a positive limit. The limit can
be 0, in which case the eval costs are still counted but can grow
without limit. This is just a preparation for the oncoming code,
and might even work.
27-Jul-1999 (Lars Duening) (3.2.7-dev.130)
- (efuns.c) Efun trim() also accepts a string of characters to trim.
- (array.h, datatypes.h, closure.h, mapping.h) Moved the definitions
of non-svalues back into their associated module header files.
- (datatypes.h, stralloc.h) Wrapped setting of svalues into nice
put_<type>() macros. For once, the sources shrank a few lines
instead of growing :-)
26-Jul-1999 (Lars Duening) (3.2.7-dev.129)
- (array.h, mapping.h, object.h, and dependees) Streamline the refcount
handling in macros ref_<type>(), deref_<type>() and free_<type>().
Not necessary in terms of typesafety, they make the source a bit
more readable, and less likely that a ref++ is forgotten.
23-Jul-1999 (Lars Duening) (3.2.7-dev.128)
- (lex.c, prolang.y) The inline function variables weren't initialized
properly nor checked, leading to interesting crashes when the driver
tried to freed non-existing memory.
- (lex.c, strfuns) Rewrote the inline closure scanner to cope with
linefills.
22-Jul-1999 (Lars Duening)
- (access_check.c) A null-message could cause a random memory
write.
- (strfuns.c) Corrected a write beyond boundary.
- (lex.c) Inline function scanning: newlines didn't trigger a
buffer refill in time.
22-Jul-1999 (Lars Duening) (3.2.7-dev.127)
- (actions, func_spec) New efun 'execute_command()' implements
a low-level access to the command parser.
- (prolang.y, exec.h) New optional driver hook H_COMMAND, which
replaces the driver based command handling with its own.
(obsoletes f-990204-1 and f-990203-09)
- (make_func.y) Lookup failures yield an error message, not just
an exit(1).
- (func_spec, efuns) New efun 'trim()' to trim characters from
a string. (f-981229-24)
- (settings/) Small corrections to 'default', added 'wunderland'.
- (pkg/ip6/) Added the experimental IPv6 patch from Uwe (thanks!).
21-Jul-1999 (Lars Duening) (3.2.7-dev.126)
- (settings/) Updated the tubmud settings file, added the sticklib
file. All scripts now use 'exec' to start the configure script,
allowing more meaningful exit codes.
- (simulate.c) Caught errors now produce a tracedump on stdout/stderr
(thanks, Sunblood!).
- (mud/sticklib/) Added the StickLib changes (thanks, Doomdark!)
- (lex.c) 'check last char before :)' stumbled over Newline characters.
- (prolang.y) Inline closures: removed an interaction between typed
inline closures in untyped functions.
- (actions.c, comm) Notify-fail handling is now in actions.c, this
also means that notify-fail messages are saved over nested
commands.
- (actions.c) notify_fail is available for NPCs, too: the text
will be told to the NPC. (f-990204-5)
- (func_spec, actions) New efun 'query_notify_fail()' returns the
current notify-fail setting. (f-990217-2)
- (func_spec, actions) New efuns 'command_stack()' and
'command_stack_depth()' to query the command stack.
20-Jul-1999 (Lars Duening) (3.2.7-dev.125)
- (simulate, interpret.c, backend.c) Player command execution is now
stacked, meaning that after a command() the previous command giver,
verb, etc are restored. This does not yet extend to notify-fails
though.
- (actions.ch) New source files holds the functions related to
command parsing and action management.
19-Jul-1999 (Lars Duening) (3.2.7-dev.124)
- (prolang.y) Removed a spurious debug printf().
- (backend, call_out.c, closure.c, interpret.c, simulate.c, main.c)
Generalized the error_recovery_info stack into a runtime context stack.
18-Jul-1999 (Lars Duening) (3.2.7-dev.123)
- (settings) Updated the tubmud settings file.
- (autoconf/configure.in, configure) Unfortunately it's not just
gcc 2.8.1 on Solaris which stumble over the float/branch test.
- (prolang.y) Removed a nasty interaction between disabled local
scopes and for() statements (which unfortunately didn't manifest
itself in earlier tests). Also, the local_scopes pragmas are
check only when entering a function.
- (otable.c) The table status threatened to print some stack garbage.
- (main, config.h.in, interpret.c, array.c, mapping.c, object.c,
simulate.c) Array and mapping size limits are now commandline
options; and a setting of 0 disables the limit checks.
16-Jul-1999 (Lars Duening)
- (autoconf/configure.in, configure) Oops, a typo in configure.in
really messed up the script.
- (backend.c) Following a notice from Stefan Lichtenhagen, I removed
the safety factor '*2' from f_regreplace() - the error it avoided
was fixed in dev.28. However, if this efun should cause crashes
again, this factor is one thing to try out.
- (simulate.c) Stupid bug, the second: clone_object() checked the
P_NO_CLONE flag before swapping in the program. (thanks, Manu!)
- (lex, prolang.y) New pragma 'no_local_scopes' turns off local
scoping to cater for legacy code; the second pragma 'local_scopes'
turns it back on.
- (settings/) Added settings file for Avalon (thanks, Thorsten!)
16-Jul-1999 (Lars Duening) (3.2.7-dev.122)
- (lex, prolang.y) Added inline closures ("functionals") using the
'(: <code/expression> :)' syntax MudOS invented. As a sideeffect,
the lexer now knows the '#line <num>' directive, and identifier
names may start with '$'. (thanks, Righ!) (p-990326)
- (func_spec, interpret.c, simulate) New efun query_command() returns
the full command given by the player (thanks, Ugh!).
15-Jul-1999 (Lars Duening) (3.2.7-dev.121)
- (prolang.y) The first expression in a for() may define local variables
which scope is the whole for() statement.
- (func_spec, interpret.c) More new bitstring efuns: count_bits(),
invert_bits().
14-Jul-1999 (Lars Duening) (3.2.7-dev.120)
- (func_spec, interpret.c) New bitstring efuns last_bit() and next_bit().
(thanks, Matthew!) (f-990203-14)
- (access_allow, comm, mudlib/ACCESS.ALLOW) Access rules can take
portnumbers into account. (idea from Gokhan, f-981211)
13-Jul-1999 (Lars Duening)
- (bugs/) Cleaned up the directory a big; created summary files b-summary
and f-summary.
- (func_spec, interpret, object, doc/efun/) New efun object_time()
returns the creation time of the object. (idea from Daniel,
f-990324-2)
- (lex, prolang.y, simulate.c, exec.h) New pragmes 'no_clone' to disallow
clones of an object, and 'no_inherit' to disallow inheriting a
program. (thanks, Daniel!) (f-990324-0, p-990417-0)
- (comm.c) Error ESHUTDOWN on read yields a proper message and removes
the interactive player.
- (func_spec, interpret.c) New bitstring efuns and_bits(), or_bits(),
xor_bits(). (idea from Matthew, f-990203-14)
12-Jul-1999 (Lars Duening)
- (func_spec, interpret.c) New efuns pow(), floor(), ceil() and atan2().
- (config.h.in, configure, interpret.c) If configuration option
DYNAMIC_COSTS is enabled (default is off), string additions are more
expensive for long strings (this is handy against the killer-loop
for (s=""; s += "a"; ) ).
12-Jul-1999 (Lars Duening) (3.2.7-dev.118, 119)
- (autoconf/configure.in, configure) gcc/cc1 2.8.1 on SunOS 5.7 falls into
catatonia when compiling the float/branch-incompatibility test.
Inserted a workaround.
- (prolang.y, lex, func_spec) Scope of variables in nested local blocks
ends with the defining block as it should. The space of such variables
is reused for other local blocks. (f-990203-05)
- dev.119: Small correction: function local variables (depth 2) can't
hide function arguments (depth 1);
11-Jul-1999 (Lars Duening) (3.2.7-dev.117)
- (machine.h.in) Oops, forgot to update this.
- (Makefile.in, port.h) Compile-time define NO_INLINES turns off inlining.
- (interpret, stralloc, strfuns.c, smalloc) Straightened out the
INLINE uses.
10-Jul-1999 (Lars Duening) (3.2.7-dev.116)
- (closure.c) Removed an erroneous errormessage when creating sefun
closures with large indices (thanks, Daniel!).
- (configuration, several files) Mappings have now an upper size limit
of MAX_MAPPING_SIZE keys (defaults to 5000). (f-990708-1)
09-Jul-1999 (Lars Duening) (3.2.7-dev.115)
- (config.h.in, autoconf/configure.in, settings/default) All of
of config.h is now configurable (and is it just me, or was
the original value parsing really broken?).
- (settings/) Added files for all Muds I had a config.h of. Oh, and
the files are now scripts in themselves :-)
08-Jul-1999 (Lars Duening) (3.2.7-dev.114)
- (machine.h.in, port.h) port.h now knows about the supported
(working) architectures and how to find the host-specific include
files. HOST_INCLUDE is still recognized, but optional.
- (machine.h.in, array.h, driver.h, port.h, interpret, simulate, random):
Use SIZEOF_CHAR_P instead of SIZEOF_P_INT.
- (Makefile.in) Target 'distclean' also deletes the
config.cache/status/log files.
- (other files) Added some documentation to the new autoconfig system.
08-Jul-1999 (Lars Duening) (3.2.7-dev.113)
Checked in the changes provided by Reinhard (thanks!):
- (machine.h.in, config.h.in, configure, autoconf/) Autoconfiguration
is now based on autoconf 2. The old configuration code is in the
subdirectory config-old/ held as backup. Special features are:
- rxcache and UDP port can be enabled/disabled explicitely.
- Enabling ERQ defines a symbol ERQ_INCLUDE pointing to the
correct include file (util/erq/erq.h resp util/xerq/erq.h).
- All config.h options can be set using parameters to configure.
configure --help will print the (long) list of available options.
- (func_spec) Fixed a rare case of an erroneus inclusion of send_imp()
UDP is disabled and thus the function f_send_imp() won't be compiled.
- (comm.c) erq.h is included only when the driver is compiled for
using the erq demon.
07-Jul-1999 (Lars Duening) (3.2.7-dev.112)
- (strfuns.c) Corrected off-by-one mistakes, and the length of the
final string.
- (datatypes.h, other files) Straightened the use of STRING_VOLATILE
(purely cosmetic).
07-Jul-1999 (Lars Duening) (3.2.7-dev.111)
- (strfuns, efuns, simulate): Modified efun debug_info() to return
the status information instead of printing it. Added "malloc" as
additional second argument to the DINFO_STATUS command.
- (interpret) Efun get_type_info() returns whether a string is shared
or not.
- (simulate, smalloc): Deactivated 'debugmalloc' and
'showsmallnewmalloced' and the associated code.
- (simulate, efuns, dumpstat, interpret): Added option DINFO_DUMP to
debug_info() to implement the 'dumpallobj' and 'opcprof' command.
- (interpret.c) Efuns trace() and traceprefix() are now validated
with the master-lfun 'valid_trace()'; the master-lfun
'query_player_level()' is thus no longer needed.
- (efuns, simulate, object): Efun set_is_wizard() is now optional,
and with it the object flag O_WIZARD.
- (object, simulate, prolang, efun): Object flag O_APPROVED is gone.
06-Jul-1999 (Lars Duening)
- (comm, simulate.c) Undid the last change. Now it is legal again for
the modify_command-hook to change the command_giver; this change
stays active for the execution of the command, and the original
commandgiver is passed to the NOTIFY_FAIL hook.
- (simulate.c) The MODIFY_COMMAND hook is now called first, even
before special commands like 'status' are parsed. This allows
the hook to filter out uses of these commands.
- (strfuns) New file holding string functions (for now).
- (simulate, otable, rxcache, stralloc, efuns, call_out, heartbeat):
Rewrote the status functions to use strbufs, in anticipation to
make these special commands into real efuns.
05-Jul-1999 (Lars Duening) (3.2.7-dev.110)
- (comm.c) include of <stddef.h> was missing.
- (simulate.c) After the modify-command hook was called, the commandgiver
and current object are restored their previous setting in case the
hook changed them. (thanks, Daniel!)
04-Jul-1999 (Lars Duening)
- (closure.c) Corrected a nasty mistyping in compile_lvalue(). (thanks,
Freaky!).
- (lex.c, interpret.c) Removed two warnings.
- (doc/efun) Removed the manpage for the long-gone efun query_host_name.
03-Jul-1999 (Lars Duening) (3.2.7-dev.109)
- The driver compiles again with egcs.
- (efuns.c) Bugfix for efun terminal_colour(): terminal_colour("bla", ([
"bla":"blu"]), 1) returned "blu" instead of "bla". (thanks, Michael!)
- (efuns.c) The efun sscanf() used the wrong function to report argument
errors. (thanks, Freaky!)
02-Jul-1999 (Lars Duening)
- (hosts/be/be.h, .../Makefile, .../machine.h, other files): Adapted for
BeOS 4.5. This involved adding numerous casts to make the now pickier
compiler happy. But now egcs starts crashing...
- (efuns.c) Found another shortcoming of present_clone() (and the reason
why I didn't see errors before *blush*).
01-Jul-1999 (Lars Duening)
- (efuns.c) Fixed two nasty bugs in efun present_clone(): make_name_sane()
could return NULL, and the comparison was done against the wrong name.
- (interpret.h) To be safe, macro put_number() takes the sp as argument.
- (call_out.c) When setting current_prog for efun closures, the code
now makes sure that the program is swapped in.
30-Jun-1999 (Lars Duening) (3.2.7-dev.108)
- (mud/lp-245/obj/simul_efun.c) Duh, had a complete brainfart yesterday
when adapting present_clone() to compat mode.
29-Jun-1999 (Lars Duening) (3.2.7-dev.107)
- (doc/efun) Removed the files for the long-gone efuns find_living(),
find_player(), set_living_name(), add_worth() and wizlist().
- (doc/efun/all_environment) Corrected a typo.
- (efuns.c) Corrected a misformed condition in efun terminal_colour().
- (gcollect.c) If a swap-in fails, the GC raises a fatal error (instead
of just crashing).
- (mud/lp-245/) Added the old LP-245 mudlib, of course adapted to
this driver.
- (func_spec, efuns) New efun present_clone() to find objects with
a specific blueprint (suggested by Coogan).
29-Jun-1999 (Lars Duening) (3.2.7-dev.106)
- (exec.h, interpret.c, call_out.c) Efun-closures are now properly
identified, and call_outs to efun-closures set current_prog to the
prog of the bound object. This sources still hold some DEBUG-printfs.
28-Jun-1999 (Lars Duening) (3.2.7-dev.105)
- (interpret.c) Added some argument checks to efun terminal_colour().
- (func_spec, doc/efun/environment) Documented that efun environment()
can also take a string as argument.
- (interpret.c) 'Indexing on illegal type' no longer dumps trace (what
for did that do that any way?).
- (main, backend.c, object.c) TIME_TO_RESET and TIME_TO_CLEAN_UP are now
defaults for the runtime options '--reset-time' and '--cleanup-time'.
- (interpret.c) Reactivating a destructed didn't update the number
of listed objects.
26-Jun-1999 (Lars Duening)
- (main.c, interpret.c, smalloc.c) Cosmetics.
25-Jun-1999 (Lars Duening) (3.2.7-dev.104)
- (lotsa files) NATIVE_MODE is gone - the only real difference it made
was the restriction of command() to the current object only, and
that can be handled by a simul-efun.
- (interpret.c) Oops, privilege_violation() slightly misinterpreted
the result from the master apply.
25-Jun-1999 (Lars Duening) (3.2.7-dev.103)
- (lotsa files) EUIDS mode is now automatic since most of the code
was there in any case.
New runtime option '--[no-]strict-euids'
which enables/disables the enforcement of euids known from the native
mode. When enabled, the LPC macro "__STRICT_EUIDS__" is defined.
The default setting is defined in config.h by STRICT_EUIDS; use
of an old config.h with NATIVE_MODE defined has (for now) the
same effect.
24-Jun-1999 (Lars Duening) (3.2.7-dev.102)
- (backend, efuns.c, heartbeat, interpret.c, object, simulate,
all config.h) OLD_RESET is gone.
24-Jun-1999 (Lars Duening) (3.2.7-dev.101)
- (mudlib/sys/{trace.h,input_to.h,files.h,debug_info.h}: Added these
includes with definitions for the efuns trace(), input_to(),
file_size(), get_dir(), and debug_info().
- (interpret, efuns, func_spec, exec.h) Finished commenting the
interpreter.
20-Jun-1999 (Lars Duening) (3.2.7-dev.100)
- (interpret) to_string(object) in compat mode added a leading
slash. program_time() freed its argument before querying it.
And recombine_free_lists() is gone for good.
- (interpret, func_spec, exec.h) After a long day: more comments
added (17155 lines done, 3150 to go). In particular,
eval_instruction() is commented *phew* (but it's still big
and ugly).
18-Jun-1999 (Lars Duening) (3.2.7-dev.99)
- (interpret, func_spec, exec.h) Something new: more comments.
(12558 lines done, 5800 to go).
16-Jun-1999 (Lars Duening)
- (interpret.c) The operators +=, -=, *=, /= now accept a float left
and an int right.
- (interpret, efuns) Efun terminal_colour() moved out from the interpreter
into efuns.c. And it received comments during this move.
15-Jun-1999 (Lars Duening)
- (interpret.c) Binding an unbound lambda to two objects and destructing
the originating object freed the lambda. (thanks, Kirnan & Michael)
14-Jun-1999 (Lars Duening)
- (driver.h, port.h, all files commented so far) New type 'Bool' and its
smaller sibling 'CBool' introduced.
- (autoconf/configure.in, configure, port.h, regexp, ptrtable) Replaced
CHARBITS by CHAR_BIT, adapted the generation of CHARBIT_MASK.
- (datatypes.h, func_spec, exec.h, interpret) Something new: more
comments (8700 lines done, 9000 to go). Actually I started wrapping
the bytecode interpretation into its own types and macros, which
may increase portability, and at least make the critical places
easier to find.
13-Jun-1999 (Lars Duening)
- (array.c) Efun inherit_list() just copies the program names, but
doesn't make them shared. Since they aren't shared anyway, this
makes the function much faster. (thanks, Michael!)
- (object.c) If the H_RESET hook is a closure, a result < 0 will disable
reset for this object. (thanks, Michael!)
12-Jun-1999 (Lars Duening)
- (interpret.c, mapping.c) Both m_indices() and map()/map_mapping()
called check_map_for_destr() twice, wasting time. (thanks, Michael!)
12-Jun-1999 (Lars Duening) (3.2.7-dev.98)
- (datatypes.h, func_spec, exec.h, interpret) Oh boy: more comments
(6700 lines done, 10000 to go).
10-Jun-1999 (Lars Duening)
- (call_out.c) Adding callouts from within a callout resulted
in the new callouts inserted in the wrong place when the active
callout had an odd delay (and thus a negative 'time left' entry).
If the new call_out had a MAX_INT delay, the current callout list
was effectively disabled. (b-990214-0)
- (backend.c) Added Michaels improvement to the swapping algorithm
(thanks!).
05-Jun-1999 (Lars Duening)
- (smalloc.c) As I feared: trying to print more information about
gc'ed objects may crash the driver *sigh*.
Patches provided by Michael (thanks!):
- (backend, interpret, simulate) Improved the handling of closure hooks:
now setting a driver hook from within the hook works well, too.
- (closure.c) symbol_variable() properly recognizes objects with
pending program replacement.
- (interpret.c) dump_trace() recognizes alien lfuns properly.
- (interpret.c) Calls to alien lfun closures didn't set extern_call.
- (interpret.c) Calls to F_UNDEF closures (closures whose object
was destructed) generate a proper error message.
- (swap.c) If a closure variable was changed to F_UNDEF by the garbage
collector, the swapper now duly writes this new info into the swap file.
- (mapping.c) During a GC, mappings didn't check for changed alien lfuns.
Some more suggestions by Michael:
- (interpret.c) to_object() on F_UNDEF closures returns 0.
- (object.c) free_object() miscounted the amount of memory used by
objects.
- (simulate.c) Memory display in 'status' for objects and programs
now both display '<total> (<swapped>)' (before, only the objects
status displayed that, programs displayed '<resident> (<swapped>)' ).
- (swap.c) If variables could not be unswapped, the swapper didn't clear
them properly.
24-May-1999 (Lars Duening) (3.2.7-dev.97)
- (interpret, exec.h, heartbeat.c, comm.c, make_func.y) More comments,
really.
22-May-1999 (Lars Duening) (3.2.7-dev.96)
- (config.h, interpret.c, closure.c) Corrected some typos.
22-May-1999 (Lars Duening) (3.2.7-dev.95)
- (interpret.c) Guess what: more comments.
- (interpret.c, sprintf.c) to_string() and sprintf() stumbled over
variable closures left dangling after a replace_program(). (thanks,
Michael!)
- (prolang.y) insert_inherited: the loop for the case '*::f' tended to
clobber its own control variable 'ip', causing the omission of
function calls. (thanks, Michael!)
18-May-1999 (Lars Duening) (3.2.7-dev.94)
- (config.h, hosts/be/config.h) Increased the default for MAX_LOCAL
to 50.
- (interpret.c) Even more comments.
17-May-1999 (Lars Duening) (3.2.7-dev.93)
- (doc/efun/filter_{mapping,indices}) Corrected a wrong phrase.
(thanks, Zwirch!)
- (interpret.c) Some more comments.
16-May-1999 (Lars Duening) (3.2.7-dev.92)
- (object, backend.c, dumpstat.c, efuns.c, interpret.c, simulate.c,
sprintf.c, ../mudlib/sys/objectinfo.h, doc/efun/object_info):
New object flag O_REPLACED for objects with replaced programs,
so that clonep() stops flagging such blueprints as clones.
(suggested by Michael)
- (datatypes.h, interpret) More comments.
- (simulate.c) Streamlined the namehandling in clone_object().
14-May-1999 (Lars Duening) (3.2.7-dev.91)
- (backend.c) Removed one 'var might be clobbered' warning.
- (datatypes.h, interpret) More comments.
- (object.c) When restoring a mapping of form '([:<width>])', the <width>
is made sure to be positive. (thanks, Michael!)
13-May-1999 (Lars Duening) (3.2.7-dev.90)
- (datatypes.h, interpret) More comments.
12-May-1999 (Lars Duening) (3.2.7-dev.89)
- (interpret.c, doc/efun/...) Efun symbol_function() won't create
closures from protected lfuns of other objects. (thanks, Michael!)
- (func_spec, comm, interpret.c, config.h, driver.h, main)
query_mud_port() did not accept int arguments as documented; also,
the multiport feature is no longer optional.
- (smalloc.c) write_lpc_trace() tries to write as much information about
an object as possible, not just 'Doesn't exist anymore'.
- (interpret.c) destruct() now accepts destructed objects as arguments.
(thanks, Largo!).
11-May-1999 (Lars Duening) (3.2.7-dev.88)
- (object.c) Fixed some memory leaks on errors during a restore. (thanks,
Michael!)
- (interpret.c) Some more comments.
10-May-1999 (Lars Duening) (3.2.7-dev.87)
- (interpret.c) Removed a crasher in call_lambda() on closures of
not-inherited variables. (thanks, Michael!)
- (closure.c) Creating a symbol_variable() now protects it against
replace_program()s. (thanks, Michael!)
- (array.c, efuns.c, exec.h, interpret.c, prolang.y) Duplicate virtual
inherits are no longer listed in the result of inheritlist() and
the various statistical functions. (thanks, Michael!)
09-May-1999 (Lars Duening) (3.2.7-dev.86)
More patches from Michael:
- (backend.c, interpret, gcollect.c) interpret:call_lambda() no longer
protects closure with an extra refcount; instead old, replaced driver
hooks are stored in an array and freed by the backend (or the
garbage collector).
- (backend.c) When computing a 'real soon' swapping time for objects
with no reset, the new swap time became negative, effectively
disabling swapping for this object.
- (interpret.c) Improvement of efun terminal_colour(), reducing the number
of created shared strings.
- (simulate.c) If the loading of objects fails, the name of the object
is printed with the error message.
- (swap.c) If an object WILL_CLEAN_UP on swap in, the swapper doesn't
bother to check for the function 'clean_up'.
- (interpret.c, prolang.y) Added a couple of missing updates of
time_of_ref.
- (interpret.c) Fixed a crasher when using to_string() on an lfun
closure for a swapped program.
- (simulate.c) lookfor_object() no longer swaps in the object, instead
the caller does it when needed. As this is rather rare, the effect
should be reduced disk activity.
- (ed.c, heartbeat.c) Removed two compilation warnings for printf()
args.
04-May-1999 (Lars Duening)
- (smalloc.c) _large_malloc() didn't compile in SMALLOC_LPC_TRACE due to
a missing 'const' specifier. (thanks, Freaky!)
02-May-1999 (Lars Duening) (3.2.7-dev.85)
- (backend.c) time_of_ref is fudged only after a reset of a swapped
object, not after a cleanup. Also, if the cleanup hook is a closure,
the time_of_ref is updated manually to make sure that the cleanup
won't occur in every backend loop.
- (simulate.c) lookfor_object() sets the time_of_ref of an object if
it had to swap it in. This is useful for blueprints for inheritance
and cloning, which would thrash otherwise. (thanks, Michael!)
- (lex.c) The test against recursive calls in _expand_define() crashed
the driver if an error occured during the macro expansion and the
error handling itself called macro expansion (e.g. through the
_expand_define_() efun). For now, non-reentrant recursive calls
are allowed again.
30-Apr-1999 (Lars Duening) (3.2.7-dev.84)
- (backend.c) If reset or cleanup cause an object to be swapped in,
the time_of_ref is fudged so that the object will swap out again
pretty soon, but not immediately.
- (hosts/be/Makefile) Re-introduced cross-compiling support for x86
on PowerPC.
29-Apr-1999 (Lars Duening)
- (doc/efun/caller_stack_depth, HISTORY) Corrected two typos (thanks,
Zora!).
28-Apr-1999 (Lars Duening) (3.2.7-dev.83)
- (backend.h, closure.c, interpret.h, efuns.c) Move error_recover_info
definition into backend.h, adapting the other files, and added
a missing include to efuns.c
- (interpret, exec.h, datatypes.h) Began commenting.
27-Apr-1999 (Lars Duening) (3.2.7-dev.82)
- (heartbeat.c) 'status tables' could cause a division by 0.
Integrated a patch from Michael:
- (backend.c) process_objects() now checks if a swap was successful
before setting did_swap (since some objects won't swap).
- (interpret.c) Added some ASSIGN_EVAL_COST in critical efuns.
- (interpret.c) call_lambda() did not update time_of_ref/O_RESET_STATE
on calls. Furthermore, objects bound to (s)efun closures were not
swapped in, which caused segfaults in dump_trace().
25-Apr-1999 (Lars Duening) (3.2.7-dev.81)
- (backend.c, swap.c) Swapped-out objects are again swapped in for
reset. Skipping the call and just setting a due-time in the
swapper resulted in too few calls to reset(), especially with
small swap times. (thanks, Michael!)
- (backend.c) Removed the RESET_DEBUG code sequences.
- (interpret.c) Calls to tefuns and vefuns assign the eval costs
first.
- (sprintf.c) If possible, file:line of an offending sprintf() statement
are appended to all error messages, not just to the one printed
on stderr.
- (etc/icon-*.ppm) The Icon for the Gamedriver.
- (hosts/be/{Makefile, icon-*.raw, driver.r, driver.rscr) Added the
icon to the compiled resources.
- (heartbeat.c) Fixed a crasher which occured when a heart_beat()
function managed to remove all remaining objects from the hb list.
19-Apr-1999 (Lars Duening)
- (mapping.c) When adding mappings, the second summand was freed before
the actual addition (thanks, Daniel!).
- (doc/LPC/modifiers) added from TubMud (thanks, Fiona!).
17-Apr-1999 (Lars Duening) (3.2.7-dev.80)
- (doc/) Small changes, improved the docs to switch, references
and alists (thanks, Freaky!).
- (lex.c) Bugfix from Daniel: Variables in closure may start with '_'.
- (closure.c) Bugfix from Daniel: #'[<] indexing corrected.
- (interpret.c) unmkmapping() also accepts key-only mappings (thanks,
Holger!).
- (func_spec) Efun caller_stack() was defined to return 'int' instead
of the correct 'object *'. (thanks, Robb!).
- (driver.h, smalloc, main) Added some 'const' to 'char *' where
useful.
- (main.c, lex.c) The list of predefs copied from the commandline is
now deallocated after the defines have been entered into the
table. This removes a spurious 'small block freed' warning on
garbage collections.
04-Apr-1999 (Lars Duening) (3.2.7-dev.78-79)
- Small changes, just cosmetics.
01-Apr-1999 (Lars Duening) (3.2.7-dev.77)
- Manually copied all changes since dev.76 into the Re-Release of 3.2.6.
- (call_out.c) Undid the change that callout can call protected
functions: this inability was intentional for security reasons.
- (backend.c) The consistency check of the object list was still
active. Now the code is still there, but deactivated.
- (doc/LPC/functions, doc/efun/call_out, doc/efun/call_other) Added
a bit documentation regarding protected functions (thanks, Macbeth!).
- (interpret.c, doc/LPC/operators) Subtraction allows any width of
the subtrahend.
31-Mar-1999 (Lars Duening)
- (HISTORY, hosts/be/Makefile) Small corrections.
31-Mar-1999 (Lars Duening) -- Release 3.2.6
- Froze 3.2.6-dev.76 for release.
31-Mar-1999 (Lars Duening) (3.2.6-dev.75)
- Changed the directory structure so that the sources are no longer
in the top directory. But there's still a long way to go before
a simple 'build' in the top directory does everything.
- (doc/...) Integrated the 'driverdocs', previously maintained
by Stefan Petri (thanks!).
31-Mar-1999 (Lars Duening) (3.2.6-dev.74)
- (doc/efun/...) Typo corrections (thanks, Coogan and Freaky!)
- (array.c) map_array() did not check if objects in the array were
destructed during the execution (thanks, Righ!). (b-990329-0)
- (util/make_docs/make_docs.c) Linux-adaption was not complete
enough.
30-Mar-1999 (Lars Duening) (3.2.6-dev.73)
- (lex.c) *duh* the last change tested for COMPAT, not the correct
COMPAT_MODE define.
29-Mar-1999 (Lars Duening) (3.2.6-dev.72)
- (lex.c) __FILE__ and __MASTER_OBJECT__ return names without leading
slash in compat mode.
- (backend.c, interpret.c) Fixed some warnings.
- (doc/efun/{sizeof, widthof, load_name}) Cosmetics.
- (comm) Undefining ERQ_DEMON did not compile (thanks, Bardioc!).
- (prolang.y, object.c) The __INIT function is now protected instead
of global (thanks, Freaky!).
- (call_out.c) Efun call_out(string,...) can now call protected functions
as well (thanks, Freaky!).
28-Mar-1999 (Lars Duening) (3.2.6-dev.71)
- (object, simulate, backend.c, interpret.c, efun_defs.c, dumpstat.c
smalloc.c) Changed the object list to a double-linked list, allowing
destructed objects to be removed immediately. In itself not a big
deal, but it allows future, more sorted incarnations of the object
list.
- (heartbeat.c,h) New module holding the heartbeat related code.
- (backend, interpret, simulate) Adapted for using the new heartbeat
code. Especially the backend loop now gives preference to the
heartbeats over resets/swaps - the latter are slowed down to
one reset/swap per cycle if there is not enough time.
26-Mar-1999 (Lars Duening) (3.2.6-dev.70)
- (object, simulate, backend.c, interpret.c, efun_defs.c, dumpstat.c
smalloc.c) Changed the object list to a double-linked list, allowing
destructed objects to be removed immediately. In itself not a big
deal, but it allows future, more sorted incarnations of the object
list.
26-Mar-1999 (Lars Duening) (3.2.6-dev.69)
- (backend.c) The logic in the computation of the average heartbeat
stats was wired backwards.
- (call_out.c, closure.c, comm.c, interpret.c, lex.c, regexp.c, simulate.c)
Removed a couple of warnings when compiling under BeOS/Intel.
- (port.c) get_current_time(): 'noted_alarms' is kept up to speed with
'total_alarms'. (thanks, Michael!)
- (backend, main, lex.c, interpret.c, simulate.c, func_spec, doc/...)
After the current implementation of the free-running alarm, which
is needed by the MAX_TIME mechanism, proved unstable on some
platforms, the axe fell on this feature altogether. What started
out as a nice idea was on the best way to grow into a maze of
special cases, all ugly. Sorry, folks.
25-Mar-1999 (Lars Duening) (3.2.6-dev.68)
- (backend.c) Corrected a possible division-by-0 in the heart
beat status output (thanks, Freaky!)
- (efuns.c) Efuns copy() and deep_copy() did copy quoted arrays.
(thanks, Michael!).
- (simulate.c, otable.c) Warnings in printf again...
- (doc/efun/previous_object) Clarified the difference between
previous_object() and previous_object(0).
24-Mar-1999 (Lars Duening) (3.2.6-dev.67)
- (efuns.c) Efun deep_copy() leaked memory, and also has to copy
arrays/mappings with just one ref (thanks, Michael!)
- (backend.c) Oops, major fault in the changed efun heart_beat_info(),
writing over array limits.
- (func_spec, interpret.c, backend.c, config.h, doc/...) The
hard time limit is now by default turned off (but can be
activated on the command line). The efun get_eval_time()
was renamed to remaining_eval_time() to avoid a clash with
some mud's driver patches. See f-981229-11 and f-990324-3
for further discussion.
- (main.c, simulate.c, port.h) Fixes related to MSDOS_FS:
Compiling with Cygwin under/for Windows didn't set the define.
legal_path() was a bit too restrictive. Added the define
to the list of options printed with '--options'.
24-Mar-1999 (Lars Duening) (3.2.6-dev.66)
- (backend) Moved the heartbeat handling into process_objects()
as well, which also got rid of the clumsy heartbeat table
handling. Only the efun heart_beat_info() is slow now.
24-Mar-1999 (Lars Duening) (3.2.6-dev.65)
- (backend, gcollect.c, interpret.c, object, otable, simulate.c)
Modified the list of objects so that the head and the end are
accessible through pointers. This allowed a better handling of
resets/cleanups/swapping such that the processing can be
aborted after ALARM_TIME and continued in a later cycle. This
should get rid of reset/...-induced lags.
As a result, the reset table introduced in dev.62 is no longer
necessary, nor is the config.h constant RESET_GRANULARITY.
backend.c still contains a sanity check in the main loop,
just in case. (f-990323-1)
- (otable.c) Removed another printf-related warning.
- (main.c, simulate) The name of the master object is assured to
be sensible (no leading '/' etc) (thanks, Freaky!).
23-Mar-1999 (Lars Duening) (3.2.6-dev.64)
- (comm.c, efuns.c, interpret.c, otable.c) Removed a couple of possible
mismatches between format-strings and passed arguments.
- (hosts/unix.h, util/*) Several small tweaks for compilation under
Solaris 2. Still, the util/Makefiles need manual changes
in order to build correctly *sigh*
- (otable.c) It is now legal to call rtable_remove() with an object
which is not in the reset table - it happens when an object
is destructed during its own reset (thanks, Zwirch!).
- (interpret.c) If m_allocate() runs out of memory, a NULL 'mapping'
svalue was left on the stack -> BOOM.
- (prolang.y, simul_efun.c) Replaced bzero() by memset().
- (main.c) The memory-reserve options had one extra 'd' in the long
form (thanks, Freaky!).
- (backend.c, object.c, otable.c) Made the reset handling resistant
against errors during the evaluation of reset().
22-Mar-1999 (Lars Duening) (3.2.6-dev.63)
- (backend.c, otable.c) Small bugfixes. Deactivated, but not deleted
the DEBUG printfs.
22-Mar-1999 (Lars Duening) (3.2.6-dev.62)
- (config.h, backend.c, otable, interpret.c, simulate.c, swap.c)
Implemented new, hopefully less disruptive version of the reset
handling. To get the old handling, define OLD_RESET in config.h .
Under the new implementation, the objects are sorted by their
reset times (but grouped according to RESET_GRANULARITY) which
allows easy retrieval of the due objects. Additionally, every
backend cycle checks for due objects, but limits the number of
calls to whatever can be done in two seconds. After all, resets
are not supposed to be exact.
For now, there are a number of DEBUG printfs in the modules.
(f-990318-0)
21-Mar-1999 (Lars Duening) (3.2.6-dev.61)
- (ptrtable.c,h) New module holding a generalized version of the pointer
table formerly located in object.c
- (dumpstat.c, interpret.c, simul_efun.c, object.c) Modified to use
the new pointer table.
- (func_spec, efuns, doc/efun/...) New efun copy() for shallow copies,
and deep_copy() for deep copies. (f-981229-12)
20-Mar-1999 (Lars Duening) (3.2.6-dev.60)
- (func_spec, interpret.c) Efun clonep() now also accepts strings.
- (port.h, main.c, comm.c, ed.c, simulate.c) Made sure that MAXPATHLEN
is defined and used on all hosts for file name buffers
(thanks, Freaky!).
- (parse_old.c, prolang.y) Removed a couple of 'unwanted assignment?'
warnings.
- (lex.c) Reallocations of the defbuf are traced only when '-c' was
given on the commandline.
- (hosts/be/Makefile) Corrected a small problem in the dependency
generation which would lead to incomplete builds.
- (pkg/diff) Added the diff code from Ugh and Alfe.
- (func_spec, efuns, doc/efun/...) New efun object_info().
- (interpret.c, doc/efun/...) Efun set_next_reset() just returns
the time until the next reset when passed 0 as argument.
19-Mar-1999 (Lars Duening)
- (alloca.c) Corrected some ugly formatting.
- (func_spec, interpret.c, doc/efun/...) Nobody was really fond of
'nameof()', so it's back to 'object_name()'. Well, it was worth
a try.
- (stralloc, sprintf.c, mudlib/master_skeleton.c doc/master/...)
Renamed master apply 'object_name()' to 'printf_obj_name()' due
to the clash with the new efun object_name().
18-Mar-1999 (Lars Duening) (3.2.6-dev.59)
- (comm.c, hosts/unix.h) Fixed the broken alarm() and UDP socket handling
for Cygwin.
- (func_spec, backend, interpret.c, lex.c, config.h, simulate.c,
doc/efun/...)
Added a time-based watchdog to the interpreter: its default setting
is given by MAX_TIME in config.h, it can be specified on the cmdline
with '--max-time', the actual value is available through the
macro __MAX_EVAL_TIME__, the remaining time can be queried with
the efun get_eval_time().
- (func_spec, interpret.c) Efun notify_fail() returns 0, not void.
(f-990203-18)
- (backend.c) look_for_objects_to_swap(): The call granularity was
computed from the config.h macros, not from values set on the
command line.
- (func_spec, simulate.c, doc/efun/...) Efun set_this_player() also
accepts 0 as argument (and then simply clears this_player()).
17-Mar-1999 (Lars Duening) (3.2.6-dev.58)
- (mapping.c, otable.c, efuns.c, comm.c) Fixed a couple of warnings
sent in by Freaky.
- (func_spec, doc/efun/...) clonep() and blueprint() take this_object()
as default argument (suggested by Freaky).
- (doc/efun/{clonep, assoc, insert_alist}) Small corrections, sent
in by Freaky.
- (lex.c) Added __MAX_EVAL_COST__ as predefined macro (suggested
by Chameloid).
- (interpret.c, simulate.c) Added the file to the 'Failed to load'
error messages (suggested by Nathan).
- (mapping.c, doc/efun/...) Modified map() and filter() so that for
0-width mappings the value 0 is passed as 'data' value.
- (func_spec, interpret.c, doc/efun/...) Renamed efuns
{filter,map}_mapping() to {filter,map}_indices(). The old names
are still available as aliases.
- (func_spec, interpret.c) Renamed blueprint() to load_name(),
renamed file_name() to nameof() (the old name is still
available as alias) and introduced program_name().
16-Mar-1999 (Lars Duening) (3.2.6-dev.57)
- (mudlib/master.c, wk/diff.{c,man}) Wrong lineends. Ooops.
16-Mar-1999 (Lars Duening) (3.2.6-dev.56)
- (mapping) Improved the implementation of efun m_rewidth().
- (func_spec, interpret.c, mapping, doc/efun/filter) New
efun filter() to filter mappings and arrays. (sort of f-981229-16)
- (func_spec, mapping, doc/efun/...) Renamed m_rewidth() to
m_reallocate() - this name comes closest.
- (func_spec, interpret.c, doc/efun/...) Renamed mapping_contains()
to m_contains(). The old name is available as alias.
- (util/xerq/socket.c) Changed a wrong datasize in erq_accept(),
this should improve handling of TCP sockets (thanks, Sieni!).
- (array.c) Added an improvement to the handling of special
cases in subtract_array() (thanks, Sunblood!). (p-990316)
15-Mar-1999 (Lars Duening)
- (func_spec, mapping, doc/efun/m_rewidth) New efun m_rewidth()
to change the width of a mapping. (f-981229-08)
- (func_spec, mapping, interpret.c, doc/efun/map) New efun map()
to map arrays and full-width mappings. (sort of f-981229-16)
15-Mar-1999 (Lars Duening) (3.2.6-dev.55)
- (func_spec, interpret.c, doc/efun/m_values) Changed efun m_values()
to return any column of a mapping. (f-981229-07)
- (func_spec, interpret.c, doc/efun/widthof) New efun widthof() to
return the width of a mapping. (mentioned in f-981228-08)
- (func_spec, interpret.c, doc/efun/m_allocate) Renamed efun
allocate_mapping() to m_allocate().
- (func_spec, interpret.c, doc/efun/unmkmapping) New efun unmkmapping()
to deconstruct a mapping.
14-Mar-1999 (Lars Duening) (3.2.6-dev.54)
- (interpret.c, efuns.c) Efuns lower_case(), upper_case(), and
capitalize() try to reuse the passed string if possible
(suggested by Sunblood).
- (interpret.c, func_spec, doc/efun/caller_stack)
New efun caller_stack() (suggested by TubMud).
12-Mar-1999 (Lars Duening)
- (otable) Commented and ansified.
- (port.h, comm.c, simulate.c) __CYGWIN32__ replaced by __CYGWIN__.
(b-990204-4)
12-Mar-1999 (Lars Duening) (3.2.6-dev.53)
- (object, interpret.c) Finished commenting this module.
- (func_spec, interpret.c, efuns) New efuns abs() (thanks, Holger!),
upper_case(), all_environment(). (f-990203-20, f-990217-1)
11-Mar-1999 (Lars Duening) (3.2.6-dev.52)
- (comm, lex.c) Increased the size of the buffer for the hostname in
gethostname() from 20 to MAXHOSTNAMELEN+1 chars. The domainname
is now determined once at startup from the hostname, removing
the need for getdomainname() (which on some machines returned
the NIS domain instead of the DNS domain anyway) (thanks, Freaky!).
(p-990309-1,2).
- (configure, autoconf/configure.in, all machine.h) Added test and
define for <sys/param.h>. In return, the test for getdomainname
is gone.
- (interpret.c) F_CATCH/F_END_CATCH added the reserve to the eval_cost,
but not the assigned_eval_cost. This could lead to amazingly
high assigned_eval_cost afterwards. (thanks, Sunblood!)
- (func_spec, interpret.c) efun clonep() returns just an int. The
name of the blueprint can now be retrieved with the
efun blueprint().
- (HISTORY) Change the format a bit.
- (efuns.{c,h}) Preliminary file holding all the new efuns.
- (func_spec, efuns) New efun make_shared_string() (adapted from
TubMud).
10-Mar-1999 (Lars Duening) (3.2.6-dev.51)
- (object, dumpstat.c, interpret.c, port.h, simulate.c, exec.h)
Started commenting the object module, and adapted the other files.
- (doc/efun/*) Improved the formatting of some files.
- (prolang.y) Better error message if a local variable is declared
again.
- (mudlib/master.c) Forgot to change efun308() into set_environment().
- (config.h) SUPPLY_PARSE_COMMAND is on again by default.
07-Mar-1999 (Lars Duening) (3.2.6-dev.50)
- (filestat.h) Oops, some compiler really don't like spurious ' even
in inactive parts of the source.
07-Mar-1999 (Lars Duening) (3.2.6-dev.49)
- (backend.c, swap.c) Added missing #include "random.h" statements.
- (parse.c) old_explode_string() was missing when only F_PROCESS_STRING,
but not SUPPLY_PARSE_COMMAND was defined. Oops.
- (filestat.h) Added #error statement in case somebody defines FILE_STAT.
- (config.h) SUPPLY_PARSE_COMMAND is off by default.
- (CHANGELOG) Corrected the entry for dev.46.
- (interpret.c) m_indices() was found to lack the code for checking the
mapping for destructed objects. Somehow it vanished from 3.2-dev.46.
- (prolang.y) Cleared a variable-shadowing warning.
- (closure.c, comm.c, gcollect.c, interpret, lex.c, make_func.y,
mapping.c, object.c, prolang.y, simulate.c, swap.c)
Added pragmas for Metrowerks compiler to handle unused
variables and intentional assignments in conditions.
- (hosts/be/Makefile) Now compiles on highest warning level.
- (interpret.h, instrs.h, exec.h, make_func.y) Broke a recursive
include loop.
06-Mar-1999 (Lars Duening) (3.2.6-dev.48)
- (func_spec, interpret.c, doc/efun/load_object)
New efun load_object() to load blueprints.
- (func_spec, interpret.c simulate, doc/efun/clone_object)
Modified efun clone_object() to accept objects. (f-990305-1)
06-Mar-1999 (Lars Duening) (3.2.6-dev.47)
- (simulate.c) With logging of compilations activated, if the
compilation of an object is aborted because an inherit is missing,
the driver logs 'needs inherit' instead of 'done' on stderr.
- (main.c, object, simulate) Extended the object structure with the
field 'load_name' which gives (in !compat with leading slash)
the filename from which the object resp. a clone's blueprint was
compiled. This field is used by the clonep() efun.
- (func_spec, interpret.c, doc/efun/clonep) New efun clonep() added.
I just don't know how to handle virtual object clones with it.
(f-990203-27, sort of)
- (main.c, hosts/be/Makefile) Added comments regarding OPCPROF.
- (array, interpret.c, parse.c) Since the old explode_string() is now
static in parse.c, it was renamed to old_explode_string(). This
allows to rename new_explode_string() in array.c to explode_string().
05-Mar-1999 (Lars Duening) (3.2.6-dev.46)
- (mapping, datatyps.h, interpret, array.c) Finished commenting the
mappings module.
- (parse, interpret.c) F_DESCRIBE was never implemented, so the stubs
are gone now, too.
- (func_spec, simulate, doc/set_environment) Renamed efun308()
to set_environment(). The old name is still available for now
(and I think Hyp was the first to propose the new name). (f-981229)
- (func_spec, interpret.c, doc/set_next_reset)
New efun set_next_reset(). (adapted from Morgengrauen)
03-Mar-1999 (Lars Duening) (3.2.6-dev.45)
- (mapping, datatypes.h, array.c, main.c, interpret.c, object.c, swap.c)
More comments and cleanup of the the mapping code.
- (backend.c) No prompt is printed to interactive users if they are
already closing down. This can happen if the current command caused
the disconnection, but not destruction of the player object.
- (array, interpret.c) Applied Sunbloods optimisation of
subtract_array(), which improves the cases 'array - ({})' and
'array - ({ x })' by avoiding copies and alist operations. (p-990303)
- (util/Makefile, util/xerq/Makefile) Cosmetics.
- (util/erq.c) Applied patches from TubMud, which also introduces two
new service types 'ERQ_ACCEPT' and 'ERQ_LOOKUP'.
02-Mar-1999 (Lars Duening) (3.2.6-dev.44)
- (mapping, datatypes.h) More comments.
- (util/xerq) Added Brian Gersts 'x-erq' demon (formerly 'tw-erq') as
an alternative to Amylaar's original erq. So far it's a quick
and dirty adaption. Thanks, Brian!
- (main.c, simulate.c, gcollect.c) Removed the last FILE_STAT extra
code.
- (lotsa files): The following features are no longer optional resp.
available: (f-981229-01)
OLD_PREVIOUS_OBJECT_BEHAVIOUR: gone
OLD_EXPLODE_BEHAVIOUR: gone
FLOATS: always available
TRANSCENDENT_FUNCTIONS: always available
NO_XVARARGS: gone
MAPPINGS: always available
SUPPLY_PARSE_COMMAND is still there... for now.
01-Mar-1999 (Lars Duening)
- (prolang.y) Undid most of the patch applied yesterday, because, as
Sunblood and Chameloid pointed out, removing duplicate virtual
inherits collides with p-990217 and results in sporadic losses
of inherited functions *sigh*. However, the bugfix itself
is ok and does stay.
28-Feb-1999 (Lars Duening) (3.2.6-dev.43)
- (prolang.y) Implemented the patch for the initialisation of
virtually inherited variables (thanks, Sunblade!). (p-990227)
28-Feb-1999 (Lars Duening) (3.2.6-dev.42)
- (main.c) '--options' didn't print absolute swap paths correctly.
- (dumpstat.c, object.h, interpret.c, simulate.c) The evalcosts are
now also counted per object (in the variables ticks and gigaticks),
and of course listed in the OBJ_DUMP and the debug_info(). (adapted
from Morgengrauen)
- (filestat.c, all config.h and Makefiles) Deactived the FILE_STAT
accounting, but left the filestat.h in place for now - it might
come in handy later.
- (prolang.y) Variables in variable-only objects are now properly
initialized by __INIT() (thanks, Sunblade!).
24-Feb-1999 (Lars Duening) (3.2.6-dev.40)
- (random) New implementation using the Mersenne Twister.
22-Feb-1999 (Lars Duening) (3.2.6-dev.39)
- (sprintf.c) Increased the size of the buffer for the string to be
created from 10KBytes to 64KBytes (suggested by Woody).
- (backend.c, swap.c) reset() is not called in objects which are swapped
out or which haven't been touched since the last reset(). Also, if
an object is swapped in after its due reset time, a new reset time
is set. (adapted from Morgengrauen)
- (prolang.y) Too big mapping aggregates generate a compile time error.
(adapted from Morgengrauen)
- (interpret.c) Illegal offsets in get_line_number() no longer crash
the driver during a tracedump, but 'just' generate a diagnostic.
(adapted from Morgengrauen)
- (comm.c, telnet.h) Added telnet options for X Display location and
authentification. (adapted from Morgengrauen)
18-Feb-1999 (Lars Duening)
- (interpret.c) Bad types to [x..] ranges produce a meaningful error
message.
17-Feb-1999 (Lars Duening) (3.2.6-dev.38)
- (interpret.c, prolang.y) Applied p-990217 from Sunblood (thanks!),
which fixes b-981201 (calls to virtually inherited function lose
track where the parents variables are) and b-981208-4 (redefinitions
of virtually inherited functions). As a sideeffect, "*":: may now
call the same function repeatedly if it is virtually inherited through
different parent lines. I don't like this behaviour, but right now
I don't grok the compiler well enough to change this. Consider it
a bug!
- (interpret.c) sizeof(mapping) checks the mapping for destructed
objects first (thanks, Holger!) (b-990217-2)
16-Feb-1999 (Lars Duening) (3.2.6-dev.37)
- (be/Makefile) the generated executable is tagged with the proper
version number (using setversion).
- (interpret) sapply_int() and apply_low() take a flag argument,
allowing to override any protection by static/protected keywords.
This is used in apply_master_ob() to allow the master applies
to be static; the earlier solution of setting current_object
messed up the previous_object() relation (*doh*!), causing
security systems to malfunction. sapply() itself is now a mere
#define for sapply_int(). (b-981110-0)
15-Feb-1999 (Lars Duening) (3.2.6-dev.36)
- (INSTALL) A few small changes (thanks, Patrick!).
- (my-rusage.h) Added an extra check for HPUX; I hope it uses the
correct definition of timeval now for RUSAGE_TIME (thanks, Gum!).
(b-990203-3)
- (prolang.y) Corrected wrap-around problem when programs larger
than 64K are compiled (thanks, Daniel!).
- (call_out.c, interpret.c) Whenever a callout on an efun closure occurs,
current_prog is set to NULL. Should an error occur, the dump_trace()
will recognize this value and not try to derefence it (what caused
the bugs p-990203-1 and b-990207 in the first place). The previous
fix to this problem didn't quite work because it ignored that
ob->prog might have been swapped out. However, should more places
crop up where current_prog has to be tested for NULL, introducing
a fake struct program for efun closures might be the better solution
in the long run (as suggested by p-990203-1, second patch).
- (interpret.c) Added new function push_valid_ob(object) which pushes
the given object onto the vm stack, unless the object is destructed
in which case the number 0 is put onto the stack. This function is
used in various places to protect apply_master_ob() against destructed
objects (esp. calls to privilege_violation(), heart_beat_error(),
valid_read() and valid_write()) (thanks, Sunblood!) (b-981226-0).
- (interpret.c) apply_master_ob() temporarily sets current_object to
the master object, allowing the master functions to be static.
10-Feb-1999 (Lars Duening) (3.2.6-dev.35)
- (call_out.c) Callouts did not set up current_prog, this caused
the tracedump to crash should an error occur in a callout to
an efun closure (thanks, Sunblood and Logic!) (p-990203-1,
b-990207).
- (call_out.c) Callouts no longer confuse 'command_giver destructed
meanwhile' with 'no command_giver to begin with' (thanks, Sissi
and Tmm!) (b-990106-0, b-990204-0)
- (closure.c) Made #'++/#'-- work (thanks, Zwirch!) (b-990204-3).
- (comm.c) During logon, current_interactive is set to the
object itself (thanks, Daniel!) (p-990203-3).
- (comm.c) When doing I/O, no output is sent to destructed snoopers
(thanks, Zwirch!) (b-990204-2).
- (Makefile) Updated dependency generation for mkdepend 1.5.
- (interpret.c) terminal_colour: Fixed a memory leak of the stack
arguments and auxiliary strings - on Tubmud the leak was severe
enough to make the GC last several hours (thanks, Sunblood!)
(p-990203-0, b-990203-1)
- (interpret.c) If adding to an array caused it to hit the upper limit,
its memory was freed nevertheless. Subsequent accesses caused all
sorts of interesting effects (thanks, Daniel and Zora!) (p-990203-2,
b-990203-5).
- (interpret.c) terminal_colour() correctly wraps strings of one less
the wrap limit (thanks, Chameloid!) (b-990210).
- (interpret.c) A call_lambda() on a CLOSURE_IDENTIFIER makes sure
that the variable is swapped in (thanks, Sunblood and Matthew!)
(b-990203-0, b-990203-6).
- (func_spec, interpret.c) to_int(), to_object() and to_float() accept
their target data type as argument (thanks, Zora and Zwirch!)
(b-980922-0, f-980928-0).
- (prolang.y) Applied a patch fixing a potential crasher (thanks, Daniel!)
(p-990203-5).
- (sprintf.c) Added guards against values < 1.0 to the use of log10
when estimating the number of digits to print (thanks, Chameloid!)
12-Dec-1998 (Lars Duening) (3.2.6-dev.34)
- (make_func.y, Makefiles) The file efun_defs.c is written directly
my make_func, not just dumped to stdout. The generated lang.y
now bears a notice that the file is generated automatically.
- (mapping) First comments added.
10-Dec-1998 (Lars Duening) -- Release 3.2.5
- Froze 3.2.5-dev.33 for release.
09-Dec-1998 (Lars Duening) (3.2.5-dev.32)
- (make_func.y, func_spec) Commented and ansified.
08-Dec-1998 (Lars Duening)
- (lex.*) Commented and ansified.
- (comm.c) At the end of a session the driver does no longer
send 'Closing down' to the socket.
07-Dec-1998 (Lars Duening)
- (simulate) New function check_no_parentdirs() checks a pathname
for parent dir specifications (e.g. '/../').
- (sprintf) This is actually an old change, but I forgot to log
it at that time: increased the size of an internal buffer
used to print float numbers to prevent crashes with big floats.
Additionally the code tries to estimate and adjust the size of
the output before it prints the float, and tests for a buffer
overrun and aborts the driver with a fatal() if it happens
(b-980420).
06-Dec-1998 (Lars Duening) (3.2.5-dev.29)
- (port.h) When compiling with the GNU compiler, _GNU_SOURCE is
defined.
- (swap.c) A seek error when trying to write a (new) block to
the swap file is no longer a fatal() error.
- (Makefile.in, util/Makefile) A normal make in util/ no longer
attempts to install the binaries. To do that, use the target
'install' in util/ or 'install-utils' in the main directory.
04-Dec-1998 (Lars Duening)
- (ed.c) Oops, had an embedded \0 character in a help text.
- (main.c) The version number printed on --version and --options
now distinguishes real releases and development versions.
- (simulate.c) legal_path() uses a refined test for '..'-directory
specifications, now being able to tell these apart from harmless
uses like '..file' or '...' (thanks, Fiona!).
03-Dec-1998 (Lars Duening) (3.2.5-dev.28)
- (backend.c) f_regreplace(): reallocation-condition was 'space < 0',
instead of 'space <= 0' which could cause memory writes just one
byte beyond the allocated block (b-981202-2).
- (interpret.c) dump_trace() and get_line_number() lacked the handling
of ALIEN_LFUN_CLOSURE calls, signified by a 0-valued pc on the
control stack. This caused runtime errors in funcalls to
symbol_function()s to crash in the error handling.
02-Dec-1998 (Lars Duening) (3.2.5-dev.27)
- (lotsa files) Replaced tab characters with spaces.
- (comm.c) Under Linux, a special handler is used to ignore SIGPIPEs,
since the provided SIG_IGN is just a one-shot handler (thanks,
Blackcat!).
01-Dec-1998 (Lars Duening) (3.2.5-dev.26)
- (main.c, ed.c, port.h) Cosmetics.
- (simulate.c) Efun command() now returns 0 when the target object
or the current object are destructed.
Similar, the handling for a string H_MODIFY_COMMAND hook did
not check if the command_giver is destructed. If the gamedriver
was compiled with -DDEBUG, this caused a fatal error 'apply()
on destructed object'.
- (interpret.c) call_lambda() increments the refcount of lambda
closures while executing their code. This is important
for driver hook closures which may first destruct and then
reload the master. Without the refcounting, this would delete
the bytecode while it is executed (thanks, Sunblade!).
- (patchlevel.h)
Correcte the automatic generation of release dates.
30-Nov-1998 (Lars Duening)
- (closure.c) Compensated a (propable) optimizer error for Linux/gcc.
See C_COMPILER_BUGS for details.
- (port.h) The replacement define for strrchr() was faulty.
27-Nov-1998 (Lars Duening) (3.2.5-dev.25)
- (simulate.c) One line was lost in error(), messing up the
command_giver in a heart_beat error.
- (interpret.c) Experimented with the TubMud patch to mark
efun closures by clearing csp->prog. However, the driver
interprets this value as 'bottom of cs stack' and thus
gets confused in F_RETURN and propably other places, too.
25-Nov-1998 (Lars Duening) (3.2.5-dev.24)
- (comm.*) Commented and converted to standard C. Also removed
the portal fragments - they didn't work anyway.
- (call_out.*, dumpstat.*, ed.*, gcollect.*) Commented and converted
to standard C. Also improved a few of the helpfiles of the
editor.
- (my-rusage.h, port.*, comm.*, hosts/be/be.h) Resolved some minor
issues under BeOS/x86.
- (main.c) Fixed a small problem in the option parsing.
- (object) The program renumber moved in here from gcollect.
21-Nov-1998 (Lars Duening)
- (hosts/fcrypt) Removed.
- (comm.c) Renamed from comm1.c
20-Nov-1998 (Lars Duening)
- (lotsa files) MSDOS support removed. Parts of the driver wouldn't
compile under MSDOS anyway. However, the support for the MSDOS
filesystem is still there.
19-Nov-1998 (Lars Duening)
- (comm1.c, config.h) The ERQ send buffer size is now configurable
in config.h, too. Also, the default size is now 1KByte for
better throughput.
- (lex.c, main.c) New defines __ERQ_MAX_SEND__ and __ERQ_MAX_REPLY__ if
if compiler is defined for ERQ support.
Both changes are taken from the x-erq distribution of Brian Gerst.
- (driver.h) If CATCH_UDP_PORT is not defined, UDP_SEND is made
undefined, too.
18-Nov-1998 (Lars Duening)
- (lex.c) Compat mode drivers define __COMPAT_MODE__ (meant to
replace COMPAT_FLAG eventually); native mode drivers define
__NATIVE_MODE__. Similar, a driver using euids defines __EUIDS__.
- (access_check.c) Sometimes the "Can't stat ACCESS_FILE" message
was generated for no reason.
- (mudlib/test_master.c) Extended the master to use normal
add_actions().
15-Nov-1998 (Lars Duening)
- (comm1, sent.h, simulate) Began ansification of comm1.c .
Moved the definition of the input_to structure from sent.h
to comm1.c
- (Copyright, CREDITS) Some cleanup.
11-Nov-1998 (Lars Duening)
- (smalloc.c) Ups, srealloc() must not be static when compiling
with SBRK_OK, as it implements the realloc() function then.
- (interpret.c, simulate.c) Added some #ifdef DEBUG...#endif
statements where appropriate.
- (gcollect) Variable time_last_gc was not visible when compiling
with MALLOC_sysmalloc.
10-Nov-1998 (Lars Duening)
- (interpret.c, my-rusage.h, port.h) A few changes to accomodate
SunOS4.
- (lex.c) Only regular files can be used as include files; before
it was possible to include directories.
09-Nov-1998 (Lars Duening)
- (lex.c) Replace the alloca()d buffers in _expand_define() with
once-xalloc()ed ones. In DEBUG mode, recursive calls to
_expand_define() are caught.
- (lex.c, patchlevel.h) Non-release versions have a version number
of the form '3.2.5-dev.16'.
- (interpret.c) Corrected an off-by-one error in the stack handling
of mapping_contains() (b-980922-1).
08-Nov-1998 (Lars Duening)
- (my-alloca.h) If alloca.c is used, the system alloca files
are not included - in most cases they define alloca() to
something which is not covered by alloca.c, kind of spoiling
the desired effect.
- (lex.c) If alloca.c is used, a call to alloca(0) is made after
each use of _expand_define(), to keep the memory usage low.
- (hosts/be/machine.h, .../Makefile)
alloca.c is no longer used.
04-Nov-1998 (Lars Duening)
- (access_check.c) If the ACCESS_FILE can't be read, an error
message is printed to stderr.
- (comm1.c) Sorted out the BeOS blocking socket problem.
03-Nov-1998 (Lars Duening)
- (func_spec, interpret.c, prolang.y) F_SWAP and F_BREAK_POINT
are compiled in only when the efuns are actually defined.
By default, they aren't.
- (simulate.c) Removed the remaining debug outputs.
- (closure.c) The branch rewriting code, responsible for changing
BRANCHes into LBRANCHes when a closure grows big in size, did
not correct 16-Bit offsets for the new target addresses of new
code. The applied fix solves the problem for UNItopia (using <>
as #include specifier), but might not be sufficient for all
cases. Therefore, two DEBUG: messages remain to warn if this
feature is used.
- (hosts/be/*) Adapted for R4/x86.
- (*.c) Removed most of the 'Possibly unwanted assigment' warnings.
02-Nov-1998 (Lars Duening)
- (simulate) Corrected bugs in make_name_sane() and load_object().
The debug outputs are still in place for now (b-981029-0).
01-Nov-1998 (Lars Duening)
- (hosts/be/Makefile) Adapted to BeOS R4.
- (simulate) The functions find_object() and find_object2() are
merged into one function lookfor_object(). For the old calls
the macros get_object() and find_object() are available
(note the subtle shift in naming!). This reduces the number
of calls to make_name_sane().
The function load_object() is no longer exported.
- (simulate) Rewrote the load_object() to use a loop for the
iterative compilation process instead of tail recursion.
- (patchlevel.h) Automatized the versioning to use PRCS keywords.
- (comm1.c) After processing a received UDP packet, the evalution
costs are cleared (thanks, Tucita!) (p-981027-0).
- (main.c) The argument parser printed the wrong option in
one error message (b-980925-1).
- (config.h, hosts/*/config.h) Increased the limit for bit strings
to 6144 Bits (using 1KB memory).
- (interpret.c) Out-of-bounds error message for the bit efuns printed
garbage instead of the faulty bitnumber (b-980925-0).
09-Oct-1998 (Lars Duening)
- (array.c, backend.c) Added some checks if memory allocations
actually succeed.
23-Sep-1998 (Lars Duening) -- Release 3.2.4
- (simulate.c) load_object() The code cleaning up the filename did
not check if an object with the 'sane' filename already exists.
This lead to duplicate entries in the object table and thus
fatal driver aborts. Furthermore, the code carelessly modified
the string passed, causing disruptions in the shared string
table.
- (doc/efun/terminal_colour, doc/efun/query_mud_port) added.
22-Sep-1998 (Lars Duening)
- (filestat.*) Oops, the one statistic necessary to detect multiple
uses of a file in one command was missing. Corrected that.
21-Sep-1998 (Lars Duening) -- Release 3.2.3
- (array.c) Changed order_alist() to use standard conformant pointer
arithmetics.
- (backend) Added the statistic 'total_player_commands'.
- (filestat.*) Statistics module counting the number and type of
file usages (read, write, delete, read for compilation, read
for inclusion, read for restore_object, write for save_object).
The statistic is enabled by defining FILE_STAT in config.h.
The statistic is appended to the file /FILESTAT when the
special command 'status files' is given.
- (access_check.c, backend.c, comm1.c, dumpstat.c, main.c, gcollect.c,
lex.c, main.c, object.c, simulate.c, various Makefiles)
Adapted for filestat.
- (main.c) Beautified the --options output.
- (swap.*, main.c) New commandline option '--swap-compact' to put
the swapper in the "compact mode". In this mode, free space in
the swapfile is reused immediately; in contrast to the default
mode in which the reuse is determined by low/high watermarks.
20-Sep-1998 (Lars Duening)
- (interpret.c) F_MAPPING_CONTAINS returned destructed objects since
it didn't check the results of get_map_lvalue() properly (thanks,
Fiona and Zora!).
- (backend.c) Reallocation of the heartbeat array now conforms more
to the standard.
14-Sep-1998 (Lars Duening) -- Release 3.2.2
- (array.c) One statement was at the wrong place in order_alist(),
causing a malfunction in explode().
- (closure.c) store_case_labels(): another crasher removed, this
time two loops assumed that the variables local to their body
keep their values between two iterations.
- (interpret.c) As in closure.c, loop body variables are moved
outside their loops if they are meant to be persistant.
- (interpret.c) A misplaced cast broke sscanf().
- (backend.*, hash.*) Beautified and commented.
- (main.*) Marked the boolean commandline parameters as such.
The gamedriver announces itself as 'LDMud'.
- (patchlevel.h) Changed version number from 03.02.1@<patchlevel>
to 3.2.<patchlevel> (note the missing leading zeroes!).
- (CHANGELOG) renamed from CHANGELOG.OSB.
- (HISTORY) new file for a user-oriented summary of the changes.
10-Sep-1998 (Lars Duening)
- (alloca.c) Beautified.
- (simulate.c) load_object: Extended the sanity checks for filenames
a bit: multiple '/' are collapsed into just one (thanks for the
idea, Zora!).
05-Sep-1998 (Lars Duening)
- (main.c) Oops, small typo in options() (thanks, Woody!).
And the short command options are now case sensitive as they
should be.
- (closure.c) Omission of a seemlingly harmless cast caused
the driver to core when compiling a switch. Unfortunately, my
simple test_master.c didn't catch this. *sigh* We need a proper
testsuite...
- (ed.c, interpret.c, lex.c, mapping.c, parse.c, prolang.y, sprintf.c)
Checked for and corrected similar casts.
- (swap.c) Re-added Macbeth's watermark handling for the reusage
of free-space, though for now it's deactivated .
- (*.c, *.y) Added some parentheses as suggested by gcc to make the
code clearer.
- (comm.*, interpret.c) Replace the define MESSAGE_FLUSH by the
variable message_flush, keeping gcc happier.
- (prolang.y) Bugfix from mubo@silicondream: If a program defined
__INIT() but didn't implement it, later inheriting of this
program crashed the driver.
- (port.h, interpret.*, prolang.*, stralloc.*) New macro LOCAL_INLINE
for compilers which can inline a function locally while at the
same time offering it for external linkage.
02-Sep-1998 (Lars Duening)
- (array.*) Commented and converted function defs to STD-C style.
- (array.c) Small improvements to unique_array() (boy, that code
is really old!).
- (main.c) Some warnings about unused variables prevented.
18-Aug-1998 (Lars Duening)
- (datatypes.h) New include file declaring all commonly used
datatypes of the virtual machine (svalue, vector, etc).
interpret.h keeps the interpreter related declarations only.
This also unclutters the struct svalue/smalloc.h relationship
a bit.
17-Aug-1998 (Lars Duening)
- (main.c) --options prints all the compilation options, --version
just the version. --help shortened to just list all commandline
options, --longhelp prints an elaborate description of these.
16-Aug-1998 (Lars Duening)
- (access_check.*) Commented, converted function defs to ansi style.
- The old access control using the ACCESS.DENY file is gone.
- (patchlevel.h) The GAME_VERSION define moved from config.h into here.
- (main.*) Commented, converted function defs to ansi style.
Rewrote the commandline argument parser. Most options are now
available in a short and long version; --version prints all
sorts of compilation options as well. New option --help.
- (driver/invocation) New documentation: driver invocation.
13-Aug-1998 (Lars Duening)
- Updated the hosts/*/config.h files.
- (hosts/be/be.h) The host dependent init makes sure that the erq
is not started automatically, even if the option to do so is
set in config.h
- (my-rusage.h) new, a wrapper for the rusage related stuff.
- (hosts/unix.h) received all the Unix specific portability
definitions from driver.h (this includes the cygnus win32
environment).
(port.h) received the remaining host dependent definitions, so that
(driver.h) can be dedicated to provide global definitions.
- (port.*, random.*) Commented, converted function defs to ansi style.
12-Aug-1998 (Lars Duening)
- (driver.h) Created from the old lint.h, it defines some macros and
includes config.h, machine.h and port.h. The system-dependent stuff
will move into port.h eventually. All sources changed to use
driver.h instead of lint.h.
- (my-alloca.h) new, a wrapper for <alloca.h>.
- (cruft/) New directory for code snippets which are no longer
useful, but interesting enough to keep around.
- (hosts/be/Makefile) New target 'dependall' updates the
dependencies in Makefile, Makefile.in, and the Makefiles
for Be, Amiga and OS/2.
11-Aug-1998 (Lars Duening)
- Compiled the sources with gcc on a high warning level and
removed as many warnings as possible. Added some patches
for compiling under Win32 with Cygwin32.
09-Aug-1998 (Lars Duening)
- 'Modularized' the sources: the exports of every .c file are
listed in an associated .h file, and only there. The liberal
sprinkling of 'extern' statements is gone.
10-Jul-1998 (Lars Duening)
- Release 3.2.1@141-osb.16
- (prolang.y) Fixed a pointer mixup which caused '"*"::' to end
in an endless loop. Bugfix provided by Daniel von Dincklage
(<vonDincklage@ozet.de> aka Sunblade@sd.mud.de)
- Updated the BeOS support: small tweaks to machine.h, the Makefile
now supports cross-compilation, a small hack in comm1.c.
04-Jul-1998 (Lars Duening)
- (prolang.y) In case of a 'Program too large' compilation error,
random memory was freed due to an uninitalized variable.
- (mudlib/test_master.c) Added this minimal master for simple
driver tests.
17-May-1998 (Lars Duening)
- Release 3.2.1@141-osb.14
- (interpret.c) The apply cache is initialized on driver startup, not
statically at compilation time. This allows compilers with less
capable preprocessors (line length limitations) to use big caches
as well.
16-May-1998 and before (Lars Duening)
- added rxcache.[ch]: cache for compiled regular expression patterns.
- added support for BeOS.
- (backend.c) Automatic garbage collections are kept at least 5 minutes
apart. Every garbage collection is logged on stdout.
- (backend.c) Variables are swapped independantly from program code.
- (comm1.c, main.c) Multiple login ports may be used in parallel. The
port numbers are given on the commandline, efun query_mud_port()
was extended to return the appropriate port number.
- (interpret.c) MudOS-efun terminal_colour() added by Mica.
- (interpret.c) this_object() in destructed objects does not print a
diagnostic anymore.
- (lex.c) more informative diagnostics about defbuf allocations. Too
big defbufs are deallocated again to conserve memory.
- (main.c) reallocation of system reserves prints diagnostics.
- (regexp.ch) NSUBEXP may take values different from 10 (OSB uses 50).
- (swap.c) Free space is reused immediately.
- (stralloc.ch, interpret.c) All the names of the lfuns applied by
the driver are stored in the shared string table on startup.
Together with some modifications to the apply cache for faster
processing of applys on shared strings, this should make a mud
a wee bit faster. Also added some comments in these areas (with
no guarantee for correctness!).
- (simulate.c) 'status tables' prints the number of cache hits both
absolute and as percentage.