Thanks, Jason, that fixed one of the 2 leaks. I'll keep searching and gdb'ing until I whack it. I haven't every really had any problems with memory -- could be because I'm just tired and missing something lame.
If anyone else has input, let me know. Thanks again, Vert @>-----Original Message----- @>From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf @>Of Jason Gauthier @>Sent: Saturday, September 28, 2002 11:22 PM @>To: 'Vertigo'; '[email protected]' @>Subject: RE: Leaking function... Second opinion? @> @> @>There's your problem. @>You are allocating memory, with str_dup when you return, and @>not freeing it. @> @>char *newstring; @> @>map = printmap(ch, ch->in_room, 2); @>newstring = insert_string(string_buf,map); @>send_to_char(newstring,ch); <-- Here @>free_string(newstring); @>return; @> @> @>Something like that should do it @> @>> -----Original Message----- @>> From: Vertigo [mailto:[EMAIL PROTECTED] @>> Sent: Saturday, September 28, 2002 10:25 PM @>> To: [email protected] @>> Subject: RE: Leaking function... Second opinion? @>> @>> @>> Here's where the function is called: @>> ---> SNIP @>> @>> map = printmap(ch, ch->in_room, 2); @>> @>> send_to_char(insert_string(string_buf,map),ch); <-- Here @>> @>> return; @>> } @>> @>> @>> @>-----Original Message----- @>> @>From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf @>> @>Of Jason Gauthier @>> @>Sent: Saturday, September 28, 2002 10:04 PM @>> @>To: 'Vertigo' @>> @>Cc: '[email protected]' @>> @>Subject: RE: Leaking function... Second opinion? @>> @> @>> @> @>> @>Are you freeing the string that this function returns? @>> @> @>> @>> -----Original Message----- @>> @>> From: Vertigo [mailto:[EMAIL PROTECTED] @>> @>> Sent: Saturday, September 28, 2002 9:54 PM @>> @>> To: [email protected] @>> @>> Subject: Leaking function... Second opinion? @>> @>> @>> @>> @>> @>> I've been looking at a piece of code for a couple of days @>> now @>> that appears to be @>> @>> leaking memory. I'd just like another opinion it to see what @>> @>> it is I'm not @>> @>> seeing. It's tied into my do_look routine and splices two @>> @>> strings together @>> @>> using getline OLC 1.81's standard getline and other standard @>> @>> functions. I'm just thinking something isn't being freed @>> @>> correctly. What is happening is I'm getting an increase in @>> @>> perms by two every single time the character @>> @>> 'looks'. Which is equivalent to the amount of strings I'm @>> @>> sending to this piece of code. The other two strings display @>> @>> fine with no leak on their own so I've pretty much deduced @>> @>> that this one is the culprit. @>> @>> @>> @>> Vert @>> @>> @>> @>> @>> @>> Attached below: @>> @>> [Snip] @>> @>> @>> @>> char *insert_string( const char *oldstring, char *insert ) @>> { @>> @>> char formatted[MSL]; @>> @>> char *tempstr, *therest; @>> @>> char templine[MSL], newstr[MSL]; @>> @>> char temp1[MSL], temp2[MSL]; @>> @>> bool mapbigger = TRUE; @>> @>> bool cap = FALSE; @>> @>> int line= 0, i=0; @>> @>> @>> @>> tempstr = str_dup(oldstring); @>> @>> @>> @>> tempstr = format_string2( tempstr, 72, FALSE ); @>> @>> /* format it to minus the map */ @>> @>> @>> @>> newstr[0] = '\0'; @>> @>> @>> @>> while( *insert || *tempstr ) @>> @>> { @>> @>> if( *tempstr && !(*insert) ) @>> @>> mapbigger = FALSE; @>> @>> @>> @>> insert = getline(insert, temp1); /*gets first @>line of map */ @>> @>> @>> @>> tempstr = getline(tempstr, temp2); /*get first line @>> of desc*/ @>> @>> @>> @>> sprintf(templine, "%s %s{x\n\r", temp1, temp2); @>> @>> @>> @>> strcat(newstr, templine); @>> @>> } @>> @>> @>> @>> if(!mapbigger) @>> @>> { @>> @>> for(tempstr = newstr;;) @>> @>> { @>> @>> formatted[i++] = *tempstr; @>> @>> if(*(tempstr++) == '\r') @>> @>> { @>> @>> if(++line > 6) @>> @>> break; @>> @>> } @>> @>> } @>> @>> @>> @>> formatted[i] = '\0'; @>> @>> @>> @>> if(is_end_punct(formatted[i-3])) @>> @>> cap = TRUE; @>> @>> @>> @>> therest = str_dup(tempstr); @>> @>> @>> @>> therest = format_string2(therest, 79, FALSE ); @>> @>> @>> @>> if(!cap) @>> @>> *therest = LOWER(*therest); @>> @>> @>> @>> strcat(formatted,therest); @>> @>> @>> @>> free_string(tempstr); @>> @>> free_string(therest); @>> @>> free_string(templine); @>> @>> free_string(temp1); @>> @>> free_string(temp2); @>> @>> @>> @>> return str_dup(formatted); @>> @>> free_string(formatted); @>> @>> } @>> @>> else @>> @>> return str_dup(newstr); @>> @>> free_string(newstr); @>> @>> } @>> @>> @>> @>> @>> @>> -- @>> @>> ROM mailing list @>> @>> [email protected] @>> @>> http://www.rom.org/cgi-bin/mailman/listinfo/rom @>> @>> @>> @> @>> @>-- @>> @>ROM mailing list @>> @>[email protected] @>> @>http://www.rom.org/cgi-bin/mailman/listinfo/rom @>> @> @>> @>> @>> -- @>> ROM mailing list @>> [email protected] @>> http://www.rom.org/cgi-bin/mailman/listinfo/rom @>> @> @>-- @>ROM mailing list @>[email protected] @>http://www.rom.org/cgi-bin/mailman/listinfo/rom @>

