(svn r328) -Fix: remove some unlogical alloca()s (Tron)
authordarkvater
Mon, 27 Sep 2004 12:36:59 +0000
changeset 318 648afd1ab9a7
parent 317 d6a93f8823a1
child 319 1769185de5f5
(svn r328) -Fix: remove some unlogical alloca()s (Tron)
pathfind.c
screenshot.c
win32.c
--- a/pathfind.c	Sun Sep 26 21:35:16 2004 +0000
+++ b/pathfind.c	Mon Sep 27 12:36:59 2004 +0000
@@ -339,40 +339,40 @@
 
 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 @@
 	if (!_patches.new_pathfinding) {
 		FollowTrack(tile, 0x3000 | TRANSPORT_RAIL, direction, enum_proc, NULL, data);
 	} else {
-		NewTrackPathFinder *tpf;
+		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));
 
-		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);
+		NTPEnum(&tpf, tile, direction);
 	}
 }
 
--- a/screenshot.c	Sun Sep 26 21:35:16 2004 +0000
+++ b/screenshot.c	Mon Sep 27 12:36:59 2004 +0000
@@ -53,7 +53,7 @@
 {
 	BitmapFileHeader bfh;
 	BitmapInfoHeader bih;
-	RgbQuad *rq = alloca(sizeof(RgbQuad) * 256);
+	RgbQuad rq[256];
 	byte *buff;
 	FILE *f;
 	uint i, padw;
@@ -99,7 +99,7 @@
 	// 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 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;
--- a/win32.c	Sun Sep 26 21:35:16 2004 +0000
+++ b/win32.c	Mon Sep 27 12:36:59 2004 +0000
@@ -1072,7 +1072,7 @@
 
 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);