
Pages:<< prev 1 next >>


Off the Edge of the Map

GroupAdministrators
Posts1,199
JoinedMar 21, 2006
Bug: Memory Leaks while reading GovernedBy and Starsystem of planets.
Danger: High - Memory Leaks are BAD.
Found by: Caius
Fixed by: Kayle and Caius
---
clans.c, fread_planet
Find:
Replace with:
Find:
Replace with:
I think I said this already, but.. Memory Leaks are BAD. Bad for business. Bad for.. just Bad. See, fread_string calls STRALLOC. Which allocates memory. But said memory was never being freed. Thus.. memory leak. So you do what I did and poof. No more leak.
(I wrote up this fix at like 3AM. This is a prime example of why working while tired is a bad thing...)
Danger: High - Memory Leaks are BAD.
Found by: Caius
Fixed by: Kayle and Caius
---
clans.c, fread_planet
Find:
case 'G': if( !str_cmp( word, "GovernedBy" ) ) { planet->governed_by = get_clan( fread_string( fp ) ); fMatch = TRUE; } break;
Replace with:
case 'G': if( !str_cmp( word, "GovernedBy" ) ) { const char *clan_name = fread_string( fp ); planet->governed_by = get_clan( clan_name ); fMatch = TRUE; STRFREE( clan_name ); } break;
Find:
if( !str_cmp( word, "Starsystem" ) ) { planet->starsystem = starsystem_from_name( fread_string( fp ) ); if( planet->starsystem ) { SPACE_DATA *starsystem = planet->starsystem; LINK( planet, starsystem->first_planet, starsystem->last_planet, next_in_system, prev_in_system ); } fMatch = TRUE; }
Replace with:
if( !str_cmp( word, "Starsystem" ) ) { const char *starsystem_name = fread_string( fp ); planet->starsystem = starsystem_from_name( starsystem_name ); if( planet->starsystem ) { SPACE_DATA *starsystem = planet->starsystem; LINK( planet, starsystem->first_planet, starsystem->last_planet, next_in_system, prev_in_system ); } fMatch = TRUE; STRFREE( starsystem_name ); }
I think I said this already, but.. Memory Leaks are BAD. Bad for business. Bad for.. just Bad. See, fread_string calls STRALLOC. Which allocates memory. But said memory was never being freed. Thus.. memory leak. So you do what I did and poof. No more leak.
(I wrote up this fix at like 3AM. This is a prime example of why working while tired is a bad thing...)
Pages:<< prev 1 next >>