Fri Mar 30 17:14:07 2001 (mmessier@prilnari.com (Marius)) * raised patchlevel to v22.2b11 * #143: Fixed crashes when destructing various objects involved in APPLY_INIT calls. Based on patches from Mark G. Adams * Removed the definition of FP_THIS_OBJECT from include/function.h since it is not used anywhere and conflicts with FP_HAS_ARGUMENTS [reported by Arren@AnarresII] * #148: Disallow load_object() with a filename containing a # (indicative of a clone). [reported by Pickett@Sumu] * #149: Crash when removing a function from the simul_efun when that function is also defined by another object that is then inherited and recompiled the second time after the function is removed from the simul_efun object (whew!) [reported by Avenger@AtP] * #141: __FILE__ cannot be included multiple times [reported by Arren@Anarres] * #140: Fixed a crasher in kill_ref(). Problem occured using a ref in foreach on a string [reported by Uranus, test case that finally exposed the problem reported by Pickett@Sumu] * Fixed foreach() in LPC2C generated code. Updated it to add the "new" support for the ref keyword in foreach. * #48: sprintf() from master::error_handler() dumps int instead of string in 'locals'. Should be fixed up now [reported by Javelin@Vincent's Hollow] Mon Feb 12 16:09:42 2001 (mmessier@prilnari.com (Marius)) * raised patchlevel to v22.2b10 * #129: Added SLC_NAMELIST to the telnet.h included with MudOS for broken systems that are missing <arpa/telnet.h> [reported by Andrew@Nanvaent] * #120: Fixed compilation problems when NO_RESETS is defined. [reported by Arren@Anarres II] * #139: Fixed a crasher when using a foreach ref within another foreach loop [reported by Pickett@Sumu] * #136: Fixed a problem with compiling a program after the previous program had a compile error inside of a function pointer [reported by Avenger@AtP] * #131: Fixed some oddness with to_int(), in particular, a single digit followed by a whitespace character would return undefined which is incorrect [reported by kriton@gameworkshop.com] * #135: Macro names must begin with either an underscore or a letter. Successive characters may be digits [reported by Arren@Anarres II] Mon Nov 6 18:48:25 2000 (mmessier@prilnari.com (Marius)) * raised patchlevel to v22.2b9 * #104: Corrected the spelling of "ninth" which is used by the parse_sentence() efun. [reported by lundberg@vr.net] * #97: More fixes for get_char() when GET_CHAR_IS_BUFFERED is enabled [fixes from Pelle Johansson] * #111: Plural of "lotus" is "lotuses" [reported by Turrican@Discworld] * #109: Fixed inline program reference increments to use the reference_prog() function. [Reported by Andrew@Nanvaent] * #110: Fix a bad call to free_string_svalue() in f_write_buffer(). The call should be free_svalue() instead. [reported by Beyond] * #103: Runtime errors in heart_beat will no longer stop the entire process. The next heart_beat will run, call_outs will run, and the time will continue to advance. This is a bug that is older than old [reported by Scatter] Wed Sep 27 08:20:05 2000 (mmessier@prilnari.com (Marius)) * raised patchlevel to v22.2b8 * #83: Fixed get_char() when GET_CHAR_IS_BUFFERED is enabled. Make sure that the string returned is null terminated and TELOPT_SGA is handled properly [patch from Pelle Johansson] * #84: Fixed a ref count problem with the connect() master apply when 0 is returned. * #86: Using default access modifiers, do not issue an error if a conflicting modifier is used [reported by Mystic] * #77: Fixed a crasher when calling map_delete() from filter() on the mapping being filtered. [reported by Andrew@Nanvaent] * #79: In certain cases generating a loop, a flag indicating the code that follows is not reached was being erroneously set, causing the code to not generate/compile properly [reported by Uranus] * #80: If a function is declared but not defined, don't enter it in the function table when generating C source for LPC. [reported by Uranus] * #90: Fixed a problem with inheriting multiple objects that each define classes and have functions with arguments using those classes. Properly adjust the types for validating arguments [reported by Randor@Aurora] * #81: Filled in missing definitions for reference support for LPC_TO_C [reported by Uranus] Thu Sep 21 14:16:49 2000 (mmessier@prilnari.com (Marius)) * raised patchlevel to v22.2b7 * #75: Fixed a typo in C_TRANSFER_LOCAL macro added in v22.2b6 [reported by Uranus] * #63: Fixed heart_beat errors for optimized builds. [reported by scatter@thevortex.com] * #71: For MySQL support, all string/char/text/blob field types will now be returned as strings by default unless the field has the BINARY modifier applied to it, in which case a buffer will be returned. * #76: Filenames containing '//' are now allowed -- multiple slashes are stripped down to a single slash [patch from Skullslayer@RoD] * Loading a binary now checks the simul_efun date to see if it has been modified (in addition to driver, includes, config, etc.) [from Bugs] Mon Sep 18 20:19:20 2000 (mmessier@prilnari.com (Marius)) * raised patchlevel to v22.2b6 * #57: Fixed a problem with single quotes inside of a macro expansion [reported by Mystic] * #64: Fixed unresolved symbol c_transfer_local for LPC_TO_C. Only used when LPC optimization is on [reported by Uranus] * #63: Fixed an error in heart_beat causing heart_beat() to get called repeatedly [reported by scatter@thevortex.com] * #65: Added some intelligence to build.MudOS on FreeBSD to try and determine if -export-dynamic or -rdynamic will work for compiling. Old versions of FreeBSD do not support them [reported by darren@nighttide.net] * Enabled #pragma optimize * #73: Fixed memory_summary() efun to handle recursive data structures [reported by Avenger@AtP] * If NO_BUFFER_TYPE is defined, MySQL BLOB fields will be treated as TEXT fields. * #50: Fixed a crasher with recursive inherits deeper than the maximum call depth [reported by Beyond] Sat Sep 9 16:16:54 2000 (mmessier@prilnari.com (Marius)) * raised patchlevel to v22.2b5 * #16: 'ref' works in foreach again [originally reported by Uranus] * #54: Added a new search location for mysql.h to satisfy RPM installs on Linux from MySQL.com. Also fixed edit_source to search for libmysqlclient.so properly [reported by jytong] * #49: Fixed oldcrypt() to actually be oldcrypt() when CUSTOM_CRYPT is defined [reported by Beyond] * Fixed a crasher when heart beats and the command_giver is shadowed [reported by Andrew@Nanvaent] * Removed Beek's expand_all_defines hack introduced in v22.2a3. This caused an undesirable compat buster from older versions of MudOS. Instead, fixed macro expansion to work according to the ANSI C standard -- almost. The only major difference now is that comments are not considered whitespace everywhere that they should be. Sat Sep 2 09:40:38 2000 (mmessier@prilnari.com (Marius)) * raised patchlevel to v22.2b4 * updated with respect to v22.1pre4 * #40: Fixed compilation error in add_action.c [reported by Loriel@LimaBean] * Don't call the first heart_beat until after saving the initial error context, otherwise an error in heart_beats or call_outs (set by preloads) will cause a crash. * #47: When using OLD_ED with a broken client that does not send CRLF for end of line, don't inadvertantly strip off the first character of the next command if there are multiple commands in the input buffer [reportd by fchen@uno.edu] * #45: Added 'an' as a special word equivilent to 'a' and 'any' Also, change ordinal for 'a', 'an' and 'any' to 1 from -1. I'm not sure of the original intent in supporting -1, but the end result is the same -- at least it's supposed to be. 1 works, -1 doesn't. [reported by Zifnab@Red Dragon] Mon Aug 28 08:16:50 2000 (mmessier@prilnari.com (Marius)) * raised patchlevel to v22.2b3 * updated with respect to v22.1pre3 * #15: Picked up the fix from v22.1pre2 that was missed in the last revision for some reason * #17, #26: Removed a chunk of old dead code for binaries support that has been obsoleted since function tables are always sorted and compressed now. Other new code had since been written assuming this and not handling the (unnecessary) binaries cases, causing the driver to crash in certain instances [reported by ackers@coolnet.net, Beyond@Lima] * #30: If an object has had its program replace, mark the string that holds its name. Also make sure that it gets freed properly when the object is deallocated [reported by Uranus] Wed Aug 23 05:08:05 2000 (mmessier@prilnari.com (Marius)) * raised patchlevel to v22.2b2 * updated with respect to v22.1pre2 * #4: fixed a problem with using the third defined class in an object as an argument to a function getting treated incorrectly as void [reported by Loriel@LimaBean] * #8: Fix compile problem when both DEBUGMALLOC_EXTENSIONS and PACKAGE_UIDS are defined [reported by Skullslayer@RoD] * #16: With COMPAT_32 defined, '&' is now a synonym for 'ref' everywhere that is appropriate [reported by Uranus] * #19: Made fixes so that RUNTIME_LOADING will work on FreeBSD [problem reported by Uranus] * #23: Corrected arguments passed to compile_object() master apply when cloning a virtual object [reported by Uranus] Sun Aug 13 22:25:28 CDT 2000 (mmessier@prilnari.com (Marius)) * raised patchlevel to v22.2b1 * updated with respect to v22.1pre1 * fixed a memory leak with MUD port external ports leaking ref counted objects received (arrays, mappings, etc.) * fixed up check_memory() code to do proper checks: . mark_apply_low_cache now bumps extra_ref for each cache entry's oprogp and progp as appropriate . dangling object list is checked for missing objects, and if found, a more appropriate error is reported. . TAG_SIMULS is used for master applies, so changed the test in md.c to 3 rather than 2 uses for this tag. . added marks to objects on the command_giver stack * PACKAGE_DB compiles again * properly free an added reference when establishing a new user connection after APPLY_CONNECT is called. * fixed a memory leak when updating the master object. The master apply table reallocated memory without freeing the previous table. * 'void' is now acceptable as an argument list for a function that takes no arguments. If used, it must be the first and only argument, and it must not be named. Also updated the testsuite to handle this. * COMPAT BUSTER: SERVER_IP is no longer supported. Use the runtime config option 'mud ip' to bind to a specific address. addr_server and portbind have both been updated to accept a parameter to specify a dotted decimal ip address to bind to. Examples: . portbind -i 192.168.1.1 -p 4000 . addr_server 7334 192.168.1.1 * COMPAT BUSTER: FD6_KIND and FD6_PORT are no longer supported as compile time options. Set 'fd6 kind' and 'fd6 port' in your config file to use them. You may use 'telnet', 'mud', 'binary' or 'ascii' as the kind. Additionally, you must now always specify -p to portbind to specify the port to bind to. * fixed various crashers in handling eof conditions while compiling, particularly in unexpected locations (comment, array block, text block, etc.) * when DEBUGMALLOC_EXTENSIONS is enabled, free up some compiler scribble space that is normally reused (cleans up errors that check_memory() reports) * fixed a crasher involving BINARIES being defined, functions being inherited and prototypes, and all sorts of other weird assorted nonsense [reported by Mystic] * new options: . GET_CHAR_IS_BUFFERED . USE_32BIT_ADDRESSING . NUM_EXTERNAL_CMDS * features: . new efun: socket_status() . classes can be inherited multiple times so long as the definitions are consistent . implemented MUD mode external ports . improved warnings for code with no side effects . resolve() can now take a function pointer as the second arg . filter() can now iterate over each character of a string . LPC programs can now exceed 64k in size with USE_32BIT_ADDRESSING . deep_inventory() and living() now default to this_object() . cp() now errors like mv() when source and dest are the same . -> syntax now uses call_other() simul_efun if one exists . function tables are now always compressed . '&' is now a synonym for 'ref' when COMPAT_32 is defined . added #warn and #error preprocess directives . when no address server connection exists, an attempt will be made once every fifteen minutes to establish one. . (s)printf() is now re-entrant, so it can be used from the object_name() master apply. . on most platforms, localtime() efun adds a new element to the array it returns indicating daylight savings time . the 3rd argument to tell_room() can now be an object . when COMPAT_32 is defined, closeurep becomes an alias for functionp . added extensive socket statistics and network_stats() as a new contrib efun to retrieve these stats. . socket_bind() now takes an optional 3rd argument that is the address to bind to rather than INADDR_ANY or the 'mud ip' config address. . socket_address() now takes an optional 2nd argument to get the local address for a socket . all objects now 'inherit' the class definitions from the simul_efun object if there are any. . restructured PACKAGE_DB to make it easier to add more database support . added support for MySQL in addition to MSQL to PACKAGE_DB . compile_object() master apply now gets a second argument indicating whether or not a clone is being done . compile_object() master apply now gets arguments passed to new() when cloning a virtual object as they'd be passed to create() in a real object. . implemented rfc 1184 (telnet linemode option) to be support running on port 23. * parser enhancements: . new error ERR_MANY_PATHS . new modifier ':c' that means just choose the first one found . two object rules are examined more thoroughly. This changes the semantics for direct_ and indirect_ applies. They can now be called with 0s as the object-type arguments, but it is now guaranteed that they will be called with filled object arguments at least once during the processing of a rule. . added optional 3rd and 4th arguments to parse_sentence(). The 3rd is an array of objects to use in the parse instead of the inventory of the user's environment. Nested arrays indicate containment. The 4th is mapping of string -> object which can be used to supply nicknames and similar things. * COMPAT BUSTERs: . dump_socket_status() efun is gone, see socket_status() . SERVER_IP is no longer a compile-time option. it is now a runtime configuration option called "mud ip" . when COMPAT_32 is defined with PACKAGE_UIDS, the uid assigned to a new object is the euid of the current object rather than the uid of the current object. . when loading/cloning a virtual object, mudlib stats, uid/euid and privs are now properly reset with the newly assigned object name.