diff -r d1cf1ff6cabb -r bf86c6cb9341 hedgewars/uLand.pas --- a/hedgewars/uLand.pas Sun Jan 24 00:02:57 2016 +0100 +++ b/hedgewars/uLand.pas Sun Jan 31 16:07:14 2016 +0300 @@ -260,7 +260,7 @@ var x, y: LongInt; p: PLongwordArray; begin -TryDo(Surface <> nil, 'Assert (LandSurface <> nil) failed', true); +if checkFails(Surface <> nil, 'Assert (LandSurface <> nil) failed', true) then exit; if SDL_MustLock(Surface) then if SDLCheck(SDL_LockSurface(Surface) >= 0, 'SDL_LockSurface', true) then exit; @@ -291,7 +291,7 @@ tmpsurf:= SDL_CreateRGBSurface(SDL_SWSURFACE, LAND_WIDTH, LAND_HEIGHT, 32, RMask, GMask, BMask, AMask); - TryDo(tmpsurf <> nil, 'Error creating pre-land surface', true); + if checkFails(tmpsurf <> nil, 'Error creating pre-land surface', true) then exit; ColorizeLand(tmpsurf); if gameFlags and gfShoppaBorder = 0 then DrawBorderFromImage(tmpsurf); AddOnLandObjects(tmpsurf); @@ -490,9 +490,11 @@ begin mapName:= ExtractFileName(cPathz[ptMapCurrent]); tmpsurf:= LoadDataImage(ptMissionMaps, mapName + '/map', ifAlpha or ifCritical or ifTransparent or ifIgnoreCaps); + if not allOK then exit; end; // (bare) Sanity check. Considering possible LongInt comparisons as well as just how much system memoery it would take -TryDo((tmpsurf^.w < $40000000) and (tmpsurf^.h < $40000000) and (QWord(tmpsurf^.w) * tmpsurf^.h < 6*1024*1024*1024), 'Map dimensions too big!', true); +if checkFails((tmpsurf^.w < $40000000) and (tmpsurf^.h < $40000000) and (QWord(tmpsurf^.w) * tmpsurf^.h < 6*1024*1024*1024), 'Map dimensions too big!', true) + then exit; ResizeLand(tmpsurf^.w, tmpsurf^.h); LoadMapConfig; @@ -503,16 +505,16 @@ rightX:= (playWidth + ((LAND_WIDTH - playWidth) div 2)) - 1; topY:= LAND_HEIGHT - playHeight; -TryDo(tmpsurf^.format^.BytesPerPixel = 4, 'Map should be 32bit', true); +if not checkFails(tmpsurf^.format^.BytesPerPixel = 4, 'Map should be 32bit', true) then + BlitImageAndGenerateCollisionInfo( + (LAND_WIDTH - tmpsurf^.w) div 2, + LAND_HEIGHT - tmpsurf^.h, + tmpsurf^.w, + tmpsurf); -BlitImageAndGenerateCollisionInfo( - (LAND_WIDTH - tmpsurf^.w) div 2, - LAND_HEIGHT - tmpsurf^.h, - tmpsurf^.w, - tmpsurf); SDL_FreeSurface(tmpsurf); -LoadMask; +if allOK then LoadMask; end; procedure DrawBottomBorder; // broken out from other borders for doing a floor-only map, or possibly updating bottom during SD @@ -797,7 +799,7 @@ if digest = '' then digest:= s else - TryDo(s = digest, 'Different maps generated, sorry', true); + checkFails(s = digest, 'Different maps generated, sorry', true); end; procedure chSendLandDigest(var s: shortstring); @@ -811,7 +813,7 @@ ScriptSetString('LandDigest', s); chLandCheck(s); - SendIPCRaw(@s[0], Length(s) + 1) + if allOK then SendIPCRaw(@s[0], Length(s) + 1) end; procedure initModule;