blob: 6890d25391ace53f5270befc71105176c0f834c6 (
plain)
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
|
/*
bug-2208.c
*/
#include <testfwk.h>
#if !defined(__SDCC_mcs51) && !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15) && !defined(__SDCC_pic14) // Lack of memory
typedef
struct SDCCBUG_Card {
signed char suit, rank;
} SDCCBUG_Card;
typedef
SDCCBUG_Card SDCCBUG_Cards[37];
SDCCBUG_Cards SDCCBUG_pack;
unsigned char SDCCBUG_packN;
unsigned char SDCCBUG_handN[2];
SDCCBUG_Cards SDCCBUG_hand[2];
signed char SDCCBUG_skill = 1;
void SDCCBUG_DealCardsTo (unsigned char player)
{
unsigned char i, j;
SDCCBUG_Card tmp;
if ((int)SDCCBUG_handN[player] >= 6 || (int)SDCCBUG_packN == 0) {
return;
}
i = (int)SDCCBUG_handN[player] + 1;
while ((int)i <= 6) {
if (SDCCBUG_skill == 4) {
j = (int)SDCCBUG_packN - 3;
if (SDCCBUG_pack[SDCCBUG_packN].rank > SDCCBUG_pack[j].rank) {
tmp.suit = SDCCBUG_pack[SDCCBUG_packN].suit;
}
}
SDCCBUG_hand[player][i].suit = SDCCBUG_pack[SDCCBUG_packN].suit;
SDCCBUG_hand[player][i].rank = SDCCBUG_pack[SDCCBUG_packN].rank;
SDCCBUG_handN[player] = i;
SDCCBUG_packN -= 1;
if ((int)SDCCBUG_packN == 0) {
return;
}
i += 1;
}
}
#endif
void testBug(void)
{
#if !defined(__SDCC_mcs51) && !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15) && !defined(__SDCC_pic14) // Lack of memory
SDCCBUG_packN = 1;
SDCCBUG_skill = 1;
SDCCBUG_pack[SDCCBUG_packN].suit = 23;
SDCCBUG_pack[SDCCBUG_packN].rank = 42;
SDCCBUG_handN[0] = 0;
SDCCBUG_DealCardsTo (0);
ASSERT(SDCCBUG_hand[0][1].suit == 23);
ASSERT(SDCCBUG_hand[0][1].rank == 42);
ASSERT(!SDCCBUG_packN);
#endif
}
|