1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-08-13 19:54:17 +02:00

Fixed some small one-time memory leaks.

This commit is contained in:
Frank Zago
2009-06-06 22:36:15 +00:00
parent b1c9b17327
commit 78d62481e4

View File

@@ -215,8 +215,6 @@ void CMapHandler::roadsRiverTerrainInit()
ttiles[i][j].resize(CGI->mh->map->twoLevel+1,0); ttiles[i][j].resize(CGI->mh->map->twoLevel+1,0);
} }
for (int i=0; i<map->width; i++) //jest po szeroko�ci for (int i=0; i<map->width; i++) //jest po szeroko�ci
{ {
for (int j=0; j<map->height;j++) //po wysoko�ci for (int j=0; j<map->height;j++) //po wysoko�ci
@@ -228,30 +226,33 @@ void CMapHandler::roadsRiverTerrainInit()
pom.tileInfo = &(map->terrain[i][j][k]); pom.tileInfo = &(map->terrain[i][j][k]);
if(pom.tileInfo->malle) if(pom.tileInfo->malle)
{ {
int cDir;
bool rotV, rotH; bool rotV, rotH;
int roadpom = pom.tileInfo->malle-1, int roadpom = pom.tileInfo->malle-1,
impom = pom.tileInfo->roadDir; impom = pom.tileInfo->roadDir;
SDL_Surface *pom1 = roadDefs[roadpom]->ourImages[impom].bitmap; SDL_Surface *bitmap = roadDefs[roadpom]->ourImages[impom].bitmap;
ttiles[i][j][k].roadbitmap.push_back(pom1);
cDir = pom.tileInfo->roadDir;
rotH = (pom.tileInfo->siodmyTajemniczyBajt >> 5) & 1; rotH = (pom.tileInfo->siodmyTajemniczyBajt >> 5) & 1;
rotV = (pom.tileInfo->siodmyTajemniczyBajt >> 4) & 1; rotV = (pom.tileInfo->siodmyTajemniczyBajt >> 4) & 1;
if(rotH) if(rotH || rotV)
{ {
ttiles[i][j][k].roadbitmap[0] = CSDL_Ext::hFlip(ttiles[i][j][k].roadbitmap[0]); if(rotH)
} bitmap = CSDL_Ext::hFlip(bitmap);
if(rotV)
{ if(rotV)
ttiles[i][j][k].roadbitmap[0] = CSDL_Ext::rotate01(ttiles[i][j][k].roadbitmap[0]); {
} SDL_Surface *bitmap2 = CSDL_Ext::rotate01(bitmap);
if(rotH || rotV) if (rotH)
{ // bitmap is already a duplicated surface
ttiles[i][j][k].roadbitmap[0] = CSDL_Ext::alphaTransform(ttiles[i][j][k].roadbitmap[0]); SDL_FreeSurface(bitmap);
bitmap = bitmap2;
}
CSDL_Ext::alphaTransform(bitmap);
} }
ttiles[i][j][k].roadbitmap.push_back(bitmap);
} }
} }
} }
@@ -265,26 +266,31 @@ void CMapHandler::roadsRiverTerrainInit()
{ {
if(map->terrain[i][j][k].nuine) if(map->terrain[i][j][k].nuine)
{ {
int cDir;
bool rotH, rotV; bool rotH, rotV;
SDL_Surface *bitmap = staticRiverDefs[map->terrain[i][j][k].nuine-1]->ourImages[map->terrain[i][j][k].rivDir].bitmap;
ttiles[i][j][k].rivbitmap.push_back(staticRiverDefs[map->terrain[i][j][k].nuine-1]->ourImages[map->terrain[i][j][k].rivDir].bitmap);
cDir = map->terrain[i][j][k].rivDir;
rotH = (map->terrain[i][j][k].siodmyTajemniczyBajt >> 3) & 1; rotH = (map->terrain[i][j][k].siodmyTajemniczyBajt >> 3) & 1;
rotV = (map->terrain[i][j][k].siodmyTajemniczyBajt >> 2) & 1; rotV = (map->terrain[i][j][k].siodmyTajemniczyBajt >> 2) & 1;
if(rotH)
{
ttiles[i][j][k].rivbitmap[0] = CSDL_Ext::hFlip(ttiles[i][j][k].rivbitmap[0]);
}
if(rotV)
{
ttiles[i][j][k].rivbitmap[0] = CSDL_Ext::rotate01(ttiles[i][j][k].rivbitmap[0]);
}
if(rotH || rotV) if(rotH || rotV)
{ {
ttiles[i][j][k].rivbitmap[0] = CSDL_Ext::alphaTransform(ttiles[i][j][k].rivbitmap[0]); if(rotH)
bitmap = CSDL_Ext::hFlip(bitmap);
if(rotV)
{
SDL_Surface *bitmap2 = CSDL_Ext::rotate01(bitmap);
if (rotH)
// bitmap is already a duplicated surface
SDL_FreeSurface(bitmap);
bitmap = bitmap2;
}
CSDL_Ext::alphaTransform(bitmap);
} }
ttiles[i][j][k].rivbitmap.push_back(bitmap);
} }
} }
} }