ldmud-3.2.9/doc/
ldmud-3.2.9/doc/efun/
ldmud-3.2.9/mud/
ldmud-3.2.9/mud/heaven7/
ldmud-3.2.9/mud/heaven7/lib/
ldmud-3.2.9/mud/lp-245/
ldmud-3.2.9/mud/lp-245/banish/
ldmud-3.2.9/mud/lp-245/doc/
ldmud-3.2.9/mud/lp-245/doc/examples/
ldmud-3.2.9/mud/lp-245/doc/sefun/
ldmud-3.2.9/mud/lp-245/log/
ldmud-3.2.9/mud/lp-245/obj/Go/
ldmud-3.2.9/mud/lp-245/players/lars/
ldmud-3.2.9/mud/lp-245/room/death/
ldmud-3.2.9/mud/lp-245/room/maze1/
ldmud-3.2.9/mud/lp-245/room/sub/
ldmud-3.2.9/mud/lp-245/secure/
ldmud-3.2.9/mud/morgengrauen/
ldmud-3.2.9/mud/morgengrauen/lib/
ldmud-3.2.9/mud/sticklib/
ldmud-3.2.9/mud/sticklib/src/
ldmud-3.2.9/mudlib/uni-crasher/
ldmud-3.2.9/pkg/
ldmud-3.2.9/pkg/debugger/
ldmud-3.2.9/pkg/diff/
ldmud-3.2.9/pkg/misc/
ldmud-3.2.9/src/autoconf/
ldmud-3.2.9/src/bugs/
ldmud-3.2.9/src/bugs/MudCompress/
ldmud-3.2.9/src/bugs/b-020916-files/
ldmud-3.2.9/src/bugs/doomdark/
ldmud-3.2.9/src/bugs/ferrycode/ferry/
ldmud-3.2.9/src/bugs/ferrycode/obj/
ldmud-3.2.9/src/bugs/psql/
ldmud-3.2.9/src/done/
ldmud-3.2.9/src/done/order_alist/
ldmud-3.2.9/src/done/order_alist/obj/
ldmud-3.2.9/src/done/order_alist/room/
ldmud-3.2.9/src/gcc/
ldmud-3.2.9/src/gcc/2.7.0/
ldmud-3.2.9/src/gcc/2.7.1/
ldmud-3.2.9/src/hosts/
ldmud-3.2.9/src/hosts/GnuWin32/
ldmud-3.2.9/src/hosts/amiga/NetIncl/
ldmud-3.2.9/src/hosts/amiga/NetIncl/netinet/
ldmud-3.2.9/src/hosts/amiga/NetIncl/sys/
ldmud-3.2.9/src/hosts/i386/
ldmud-3.2.9/src/hosts/msdos/byacc/
ldmud-3.2.9/src/hosts/msdos/doc/
ldmud-3.2.9/src/hosts/os2/
ldmud-3.2.9/src/hosts/win32/
ldmud-3.2.9/src/util/
ldmud-3.2.9/src/util/erq/
ldmud-3.2.9/src/util/indent/hosts/next/
ldmud-3.2.9/src/util/xerq/
ldmud-3.2.9/src/util/xerq/lpc/
ldmud-3.2.9/src/util/xerq/lpc/www/
Short: Memory leak in terminal_colour()
From: Michael Sporn (sporn@mathematik.hu-berlin.de, sunblood@tubmud)
Date: 990121
Type: Patch
State: Applied.

See also b-990203-1.

Das memory leak entsteht in terminal_colour. Bei jedem Aufruf werden das
1. Argument und gewisse Hilfsstrings nicht freigegeben. Gerade wenn alle
messages an user durch diese Funktion laufen, wirkt sich das recht
verheerend aus.

*** ldmud-3.2.5.orig/interpret.c	Thu Dec 10 03:37:36 1998
--- ldmud-3.2.5/interpret.c	Tue Jan 19 00:58:19 1999
***************
*** 4167,4178 ****

          /* dirty hack to make an svalue from parts[i] */
          mkey.type = T_STRING;
!         mkey.x.string_type = STRING_MALLOC;
!         mkey.u.string = string_copy( parts[i] );

          /* now look for mapping data */
          mdata = get_map_lvalue( sp->u.map, & mkey, 0 );

          /* if it is a string, use it as part, if not, go on with the old */
          if ( mdata && mdata->type == T_STRING ) {
            parts[i] = mdata->u.string;
--- 4168,4183 ----

          /* dirty hack to make an svalue from parts[i] */
          mkey.type = T_STRING;
!
!         /* sunblood: get_map_lvalue makes the string shared anyway */
!         mkey.x.string_type = STRING_SHARED;
!         mkey.u.string = make_shared_string( parts[i] );

          /* now look for mapping data */
          mdata = get_map_lvalue( sp->u.map, & mkey, 0 );

+         free_string( mkey.u.string );
+
          /* if it is a string, use it as part, if not, go on with the old */
          if ( mdata && mdata->type == T_STRING ) {
            parts[i] = mdata->u.string;
***************
*** 4363,4368 ****
--- 4368,4374 ----
               , j, cp - deststr, sp->u.string, indent, wrap);
        }
  #endif
+       free_svalue(sp);
        put_malloced_string(deststr, sp);
        break;
      }