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; }