# HG changeset patch # User koda # Date 1312237729 -7200 # Node ID a0455a050ca893257e62e05c32dd912d415b0821 # Parent 3a82724de7597fcdaa8c873def679d7c69ad7ca4 add a couple of nilcheck for safety diff -r 3a82724de759 -r a0455a050ca8 hedgewars/PascalExports.pas --- a/hedgewars/PascalExports.pas Mon Aug 01 16:45:45 2011 -0400 +++ b/hedgewars/PascalExports.pas Tue Aug 02 00:28:49 2011 +0200 @@ -77,7 +77,6 @@ procedure HW_zoomReset; cdecl; export; begin ZoomValue:= cZoomVal; - //middleClick:= true; // center the camera at current hog if CurrentHedgehog <> nil then followGear:= CurrentHedgehog^.Gear; @@ -234,8 +233,8 @@ function HW_isAmmoMenuNotAllowed: boolean; cdecl; export; begin; - exit ( (TurnTimeLeft = 0) or (not CurrentTeam^.ExtDriven and (((CurAmmoGear = nil) or - ((Ammoz[CurAmmoGear^.AmmoType].Ammo.Propz and ammoprop_AltAttack) = 0)) and hideAmmoMenu)) ); + exit( (TurnTimeLeft = 0) or (not CurrentTeam^.ExtDriven and (((CurAmmoGear = nil) or + ((Ammoz[CurAmmoGear^.AmmoType].Ammo.Propz and ammoprop_AltAttack) = 0)) and hideAmmoMenu)) ); end; function HW_isWeaponRequiringClick: boolean; cdecl; export; @@ -265,7 +264,7 @@ function HW_isWeaponRope: boolean cdecl; export; begin if (CurrentHedgehog <> nil) and (CurrentHedgehog^.Ammo <> nil) and (CurrentHedgehog^.BotLevel = 0) then - exit (CurrentHedgehog^.CurAmmoType = amRope) + exit(CurrentHedgehog^.CurAmmoType = amRope) else exit(false); end; @@ -295,17 +294,17 @@ function HW_getWeaponNameByIndex(whichone: LongInt): PChar; cdecl; export; begin - exit (str2pchar(trammo[Ammoz[TAmmoType(whichone+1)].NameId])); + exit(str2pchar(trammo[Ammoz[TAmmoType(whichone+1)].NameId])); end; function HW_getWeaponCaptionByIndex(whichone: LongInt): PChar; cdecl; export; begin - exit (str2pchar(trammoc[Ammoz[TAmmoType(whichone+1)].NameId])); + exit(str2pchar(trammoc[Ammoz[TAmmoType(whichone+1)].NameId])); end; function HW_getWeaponDescriptionByIndex(whichone: LongInt): PChar; cdecl; export; begin - exit (str2pchar(trammod[Ammoz[TAmmoType(whichone+1)].NameId])); + exit(str2pchar(trammod[Ammoz[TAmmoType(whichone+1)].NameId])); end; function HW_getNumberOfWeapons:LongInt; cdecl; export; @@ -315,6 +314,7 @@ procedure HW_setWeapon(whichone: LongInt); cdecl; export; begin + if (CurrentTeam = nil) then exit; if (not CurrentTeam^.ExtDriven) and (CurrentTeam^.Hedgehogs[0].BotLevel = 0) then SetWeapon(TAmmoType(whichone+1)); end; @@ -328,11 +328,12 @@ var a : PHHAmmo; slot, index: LongInt; begin - if (CurrentTeam = nil) or - (CurrentHedgehog = nil) or - (CurrentTeam^.ExtDriven) or - (CurrentTeam^.Hedgehogs[0].BotLevel <> 0) then + // nil check + if (CurrentHedgehog = nil) or (CurrentHedgehog^.Ammo = nil) or (CurrentTeam = nil) then exit(-1); + // hog controlled by opponent (net or ai) + if (CurrentTeam^.ExtDriven) or (CurrentTeam^.Hedgehogs[0].BotLevel <> 0) then + exit(1); a:= CurrentHedgehog^.Ammo; for slot:= 0 to cMaxSlotIndex do @@ -351,7 +352,10 @@ function HW_getTurnsForCurrentTeam: LongInt; cdecl; export; begin - exit(CurrentTeam^.Clan^.TurnNumber); + if (CurrentTeam <> nil) and (CurrentTeam^.Clan <> nil) then + exit(CurrentTeam^.Clan^.TurnNumber) + else + exit(0); end; function HW_getMaxNumberOfHogs: LongInt; cdecl; export;