commit 922bca8

Devine Lu Linvega  ·  2026-02-18 16:14:41 +0000 UTC
parent 63e8ecf
Do not S_ISDIR on error
1 files changed,  +6, -6
+6, -6
 1@@ -525,7 +525,7 @@ screen_deo_sprite(void)
 2 	const int layer = ctrl & 0x40, layer_mask = layer ? 0x3 : 0xc;
 3 	const int blend = ctrl & 0xf;
 4 	const int opaque_mask = blend % 5;
 5-	const int row_step = flipy ? -1 : 1;
 6+	const int row_incr = flipy ? -1 : 1;
 7 	const int row_start = flipy ? 7 : 0;
 8 	const Uint8 *table = blend_lut[blend][layer >> 6];
 9 	if(ctrl & 0x80) {
10@@ -535,7 +535,7 @@ screen_deo_sprite(void)
11 			if(x0 + 8 >= screen_wmar2 || y0 + 8 >= screen_hmar2) continue;
12 			Uint8 *dst = screen_layers + y0 * screen_wmar2 + x0;
13 			const Uint8 *rowptr = &ram[rA + row_start];
14-			for(j = 0; j < 8; j++, dst += screen_wmar2, rowptr += row_step) {
15+			for(j = 0; j < 8; j++, dst += screen_wmar2, rowptr += row_incr) {
16 				Uint8 *d = dst, bits1 = rowptr[0], bits2 = rowptr[8];
17 				if(flipx)
18 					for(int k = 0; k < 8; k++, d++, bits1 >>= 1, bits2 >>= 1) {
19@@ -558,7 +558,7 @@ screen_deo_sprite(void)
20 			if(x0 + 8 >= screen_wmar2 || y0 + 8 >= screen_hmar2) continue;
21 			Uint8 *dst = screen_layers + y0 * screen_wmar2 + x0;
22 			const Uint8 *rowptr = &ram[rA + row_start];
23-			for(j = 0; j < 8; j++, dst += screen_wmar2, rowptr += row_step) {
24+			for(j = 0; j < 8; j++, dst += screen_wmar2, rowptr += row_incr) {
25 				Uint8 *d = dst, bits = rowptr[0];
26 				if(flipx)
27 					for(int k = 0; k < 8; k++, d++, bits >>= 1) {
28@@ -758,7 +758,7 @@ put_statfile(Uint8 *dest, const char *filepath, const char *basename)
29 	char pathbuf[0x2000];
30 	make_pathfile(pathbuf, filepath, basename);
31 	err = stat(pathbuf, &st);
32-	dir = S_ISDIR(st.st_mode);
33+	dir = !err && S_ISDIR(st.st_mode);
34 	dest += put_stat(dest, 4, st.st_size, err, dir, 1);
35 	dest += put_text(dest, " ");
36 	dest += put_text(dest, basename);
37@@ -895,7 +895,7 @@ file_stat(unsigned int id, Uint16 addr, unsigned int len)
38 	if(addr + len > 0x10000)
39 		len = 0x10000 - addr;
40 	err = stat(ufs[id].filepath, &st);
41-	dir = S_ISDIR(st.st_mode);
42+	dir = !err && S_ISDIR(st.st_mode);
43 	return put_stat(&ram[addr], len, st.st_size, err, dir, 0);
44 }
45 
46@@ -1334,7 +1334,7 @@ main(int argc, char **argv)
47 {
48 	int i = 1;
49 	if(argc == 2 && argv[1][0] == '-' && argv[1][1] == 'v')
50-		return !fprintf(stdout, "%s - Varvara Emulator, 17 Feb 2026.\n", argv[0]);
51+		return !fprintf(stdout, "%s - Varvara Emulator, 18 Feb 2026.\n", argv[0]);
52 	else if(argc == 1)
53 		return !fprintf(stdout, "usage: %s [-v] file.rom [args..]\n", argv[0]);
54 	else if(!system_boot(argv[i++], argc > 2))