summaryrefslogtreecommitdiff
path: root/support/regression/tests/bug-2582.c
blob: 85dea3977ab595d19e0d305547443d479acf71b3 (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
68
69
70
71
72
73
74
/*
   bug-2195.c

   A z80 parameter passing bug.
*/

#include <testfwk.h>

typedef unsigned char u8;

typedef struct WindowPositionStruct
{
    u8 mX;
    u8 mY;
} WindowPosition;

typedef struct WindowSizeStruct
{
    u8 mW;
    u8 mH;
} WindowSize;

typedef struct WindowPositionAndSizeStruct
{
    WindowPosition mPosition;
    WindowSize mSize;
} WindowPositionAndSize;

typedef struct WindowRenderStyleStruct
{
    u8 mStateColor[4];
} WindowRenderStyle;

typedef struct WindowStruct
{
    WindowPositionAndSize mPositionAndSize;

    WindowRenderStyle* mpStyle;
} Window;

void BG_FillRect( u8 x, u8 y, u8 w, u8 h, u8 f)
{
    ASSERT(x == 1);
    ASSERT(y == 2);
    ASSERT(w == 3);
    ASSERT(h == 4);
    ASSERT(f == 0);
}

static Window gWindow;
static WindowRenderStyle gWindowRenderStyle;

void testBug(void)
{
    u8 state = 0;
    gWindow.mpStyle = &gWindowRenderStyle;
    gWindow.mPositionAndSize.mPosition.mX = 1;
    gWindow.mPositionAndSize.mPosition.mY = 2;
    gWindow.mPositionAndSize.mSize.mW = 3;
    gWindow.mPositionAndSize.mSize.mH = 4;

    {
        Window* pWindow = &gWindow;

        BG_FillRect( 
            pWindow->mPositionAndSize.mPosition.mX,
            pWindow->mPositionAndSize.mPosition.mY,
            pWindow->mPositionAndSize.mSize.mW,
            pWindow->mPositionAndSize.mSize.mH, 
            pWindow->mpStyle->mStateColor[state]
        );
    }
}