File: switch-enum-pr105273-doom-p_floor.c

package info (click to toggle)
gcc-arm-none-eabi 15%3A14.2.rel1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,099,328 kB
  • sloc: cpp: 3,627,108; ansic: 2,571,498; ada: 834,230; f90: 235,082; makefile: 79,231; asm: 74,984; xml: 51,692; exp: 39,736; sh: 33,298; objc: 15,629; python: 15,069; fortran: 14,429; pascal: 7,003; awk: 5,070; perl: 3,106; ml: 285; lisp: 253; lex: 204; haskell: 135
file content (89 lines) | stat: -rw-r--r-- 1,515 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
/* Reduced from linuxdoom-1.10's p_floor.c (GPLv2).  */

#define FRACBITS		16
#define FRACUNIT		(1<<FRACBITS)
#define PU_LEVSPEC		51
#define FLOORSPEED		FRACUNIT

typedef int fixed_t;
typedef struct line_s line_t;

typedef struct
{
    fixed_t floorheight;
    /* [...snip...] */
} sector_t;

typedef enum
{
    build8,
    turbo16

} stair_e;

typedef struct
{
    /* [...snip...] */
    fixed_t floordestheight;
    fixed_t speed;
} floormove_t;

extern sector_t* sectors;

void* Z_Malloc (int size, int tag, void *ptr);

int
P_FindSectorFromLineTag
( line_t* line,
  int start );

int
EV_BuildStairs
( line_t*	line,
  stair_e	type )
{
    int			secnum;
    int			height;
    /* [...snip...] */
    int			rtn;
    
    sector_t*		sec;
    /* [...snip...] */

    floormove_t*	floor;
    
    fixed_t		stairsize;
    fixed_t		speed;

    secnum = -1;
    rtn = 0;
    while ((secnum = P_FindSectorFromLineTag(line,secnum)) >= 0)
    {
	sec = &sectors[secnum];

	/* [...snip...] */

	rtn = 1;
	floor = Z_Malloc (sizeof(*floor), PU_LEVSPEC, 0);
	
	/* [...snip...] */

	switch(type)
	{
	  case build8:
	    speed = FLOORSPEED/4;
	    stairsize = 8*FRACUNIT;
	    break;
	  case turbo16:
	    speed = FLOORSPEED*4;
	    stairsize = 16*FRACUNIT;
	    break;
	}
	floor->speed = speed; /* { dg-bogus "use of uninitialized value 'speed'" } */
	height = sec->floorheight + stairsize; /* { dg-bogus "use of uninitialized value 'stairsize'" } */
	floor->floordestheight = height;

	/* [...snip...] */
    }
    return rtn;
}