Andreas Kirschbaum wrote: > Hi, > > I'd like to present some bug fixes for the server. (I'll commit them if > there are no objections.) The patches correct some out of bounds > accesses to arrays that occurred on my local server. > > For the first patch (patch-1.diff), I do not have any specific item to > reproduce the bug but it occurred frequently that "enc > 20". Looks fine. > > The loops in patch-2.diff run one too far, especially for (client) map > size 25x25: in this case the loops run from -1 to 25 (inclusive). I'd double check that logic if that change still works properly if the player chooses an even map size (eg, 20x20). Granted, that it is a little odd in that the player won't be centered, but I recall some odd issues there. Alternative would only be to allow odd map sizes or the like. > > The patch patch-3.diff fixes two out of range errors in lines 737+ and > 1061+. The remaining changes replace the sizeof-expressions with the > macro "arraysize". Is this change acceptable or should I correct the > bugs only? Maybe the macro should go into a header file (which one?) > because there are some other places (server/commands.c, > server/alchemy.c, ...) where it could be used. If not seen any problems here, so I'm not positive what that change is fixing. > > patch-4.diff fixes some invalid array references when no free spot can > be found. (Only the first one in treasure.c did actually crash.) I don't > think, the fixes for the exit (and maybe the key) are very good because > they drop the exit or place the key in an invalid place. Hard to say - in some cases, it can be better to just crash, because at least that allows easier investigation on what caused the problem. > > The bug in patch-5.diff did happen in /pup_land/nurnberg/dick/bomb1 with > the first titan (it has Str=60). For me, this patch is not yet ready for > inclusion because similar problems exist for dex_bonus[] and maybe other > xxx_bonus[]. My preferred solution is to create new functions to > calculate the bonus. These functions can take care for the correct index > values. Well, one solution is to just extend the tables themselves (str_bonus, etc). And in fact, that is probably the best solution, because it keeps it simple (same code for both monsters & characters). Probably still important to have a max_player_stat vs just a max_stat. _______________________________________________ crossfire-devel mailing list crossfire-devel at lists.real-time.com https://mailman.real-time.com/mailman/listinfo/crossfire-devel