diff options
author | darkvater <darkvater@openttd.org> | 2004-09-27 12:36:59 +0000 |
---|---|---|
committer | darkvater <darkvater@openttd.org> | 2004-09-27 12:36:59 +0000 |
commit | edf841fb6fb6baf414b30fa2d2a21d5faf5c373c (patch) | |
tree | 40b2139cd0a555ec553833629e9f82e58c708b6d | |
parent | 0dbe38fba75b7363a9535b163e47efb6a191cbca (diff) | |
download | openttd-edf841fb6fb6baf414b30fa2d2a21d5faf5c373c.tar.xz |
(svn r328) -Fix: remove some unlogical alloca()s (Tron)
-rw-r--r-- | pathfind.c | 60 | ||||
-rw-r--r-- | screenshot.c | 6 | ||||
-rw-r--r-- | win32.c | 2 |
3 files changed, 33 insertions, 35 deletions
diff --git a/pathfind.c b/pathfind.c index e5f099ef8..a0f26c782 100644 --- a/pathfind.c +++ b/pathfind.c @@ -339,40 +339,40 @@ void TPFMode1(TrackPathFinder *tpf, uint tile, int direction) void FollowTrack(uint tile, uint16 flags, byte direction, TPFEnumProc *enum_proc, TPFAfterProc *after_proc, void *data) { - TrackPathFinder *tpf = alloca(sizeof(TrackPathFinder)); + TrackPathFinder tpf; assert(direction < 4); /* initialize path finder variables */ - tpf->userdata = data; - tpf->enum_proc = enum_proc; - tpf->new_link = tpf->links; - tpf->num_links_left = 0x400; + tpf.userdata = data; + tpf.enum_proc = enum_proc; + tpf.new_link = tpf.links; + tpf.num_links_left = lengthof(tpf.links); - tpf->rd.cur_length = 0; - tpf->rd.depth = 0; - tpf->rd.pft_var6 = 0; + tpf.rd.cur_length = 0; + tpf.rd.depth = 0; + tpf.rd.pft_var6 = 0; - tpf->var2 = HASBIT(flags, 15) ? 0x43 : 0xFF; /* 0x8000 */ + tpf.var2 = HASBIT(flags, 15) ? 0x43 : 0xFF; /* 0x8000 */ - tpf->disable_tile_hash = HASBIT(flags, 12) != 0; /* 0x1000 */ - tpf->hasbit_13 = HASBIT(flags, 13) != 0; /* 0x2000 */ + tpf.disable_tile_hash = HASBIT(flags, 12) != 0; /* 0x1000 */ + tpf.hasbit_13 = HASBIT(flags, 13) != 0; /* 0x2000 */ - tpf->tracktype = (byte)flags; + tpf.tracktype = (byte)flags; if (HASBIT(flags, 11)) { - tpf->rd.pft_var6 = 0xFF; - tpf->enum_proc(tile, data, 0, 0, 0); - TPFMode2(tpf, tile, direction); + tpf.rd.pft_var6 = 0xFF; + tpf.enum_proc(tile, data, 0, 0, 0); + TPFMode2(&tpf, tile, direction); } else { /* clear the hash_heads */ - memset(tpf->hash_head, 0, sizeof(tpf->hash_head)); - TPFMode1(tpf, tile, direction); + memset(tpf.hash_head, 0, sizeof(tpf.hash_head)); + TPFMode1(&tpf, tile, direction); } if (after_proc != NULL) - after_proc(tpf); + after_proc(&tpf); } typedef struct { @@ -713,19 +713,17 @@ void NewTrainPathfind(uint tile, byte direction, TPFEnumProc *enum_proc, void *d if (!_patches.new_pathfinding) { FollowTrack(tile, 0x3000 | TRANSPORT_RAIL, direction, enum_proc, NULL, data); } else { - NewTrackPathFinder *tpf; - - tpf = alloca(sizeof(NewTrackPathFinder)); - tpf->userdata = data; - tpf->enum_proc = enum_proc; - tpf->tracktype = 0; - tpf->maxlength = _patches.pf_maxlength; - tpf->nstack = 0; - tpf->new_link = tpf->links; - tpf->num_links_left = 0x400; - memset(tpf->hash_head, 0, sizeof(tpf->hash_head)); - - NTPEnum(tpf, tile, direction); + NewTrackPathFinder tpf; + tpf.userdata = data; + tpf.enum_proc = enum_proc; + tpf.tracktype = 0; + tpf.maxlength = _patches.pf_maxlength; + tpf.nstack = 0; + tpf.new_link = tpf.links; + tpf.num_links_left = lengthof(tpf.links); + memset(tpf.hash_head, 0, sizeof(tpf.hash_head)); + + NTPEnum(&tpf, tile, direction); } } diff --git a/screenshot.c b/screenshot.c index fa94c8acd..3b17028dd 100644 --- a/screenshot.c +++ b/screenshot.c @@ -53,7 +53,7 @@ static bool MakeBmpImage(const char *name, ScreenshotCallback *callb, void *user { BitmapFileHeader bfh; BitmapInfoHeader bih; - RgbQuad *rq = alloca(sizeof(RgbQuad) * 256); + RgbQuad rq[256]; byte *buff; FILE *f; uint i, padw; @@ -99,7 +99,7 @@ static bool MakeBmpImage(const char *name, ScreenshotCallback *callb, void *user // write file header and info header and palette fwrite(&bfh, 1, sizeof(bfh), f); fwrite(&bih, 1, sizeof(bih), f); - fwrite(rq, 1, sizeof(RgbQuad) * 256, f); + fwrite(rq, 1, sizeof(rq), f); // use by default 64k temp memory maxlines = clamp(65536 / padw, 16, 128); @@ -146,7 +146,7 @@ static void PNGAPI png_my_warning(png_structp png_ptr, png_const_charp message) static bool MakePNGImage(const char *name, ScreenshotCallback *callb, void *userdata, uint w, uint h, int pixelformat, const byte *palette) { - png_colorp rq = alloca(sizeof(png_color) * 256); + png_color rq[256]; byte *buff; FILE *f; uint i, y, n; @@ -1072,7 +1072,7 @@ static void GetFileInfo(DebugFileInfo *dfi, const char *filename) static char *PrintModuleInfo(char *output, HMODULE mod) { - char *buffer = alloca(MAX_PATH); + char buffer[MAX_PATH]; DebugFileInfo dfi; GetModuleFileName(mod, buffer, MAX_PATH); GetFileInfo(&dfi, buffer); |