5
5
struct variable * allvariables = NULL ;
6
6
7
7
struct variable *
8
- new_variable (const char * name , struct ECPGtype * type )
8
+ new_variable (const char * name , struct ECPGtype * type , int brace_level )
9
9
{
10
10
struct variable * p = (struct variable * ) mm_alloc (sizeof (struct variable ));
11
11
12
12
p -> name = mm_strdup (name );
13
13
p -> type = type ;
14
- p -> brace_level = braces_open ;
14
+ p -> brace_level = brace_level ;
15
15
16
16
p -> next = allvariables ;
17
17
allvariables = p ;
@@ -20,7 +20,7 @@ new_variable(const char *name, struct ECPGtype * type)
20
20
}
21
21
22
22
static struct variable *
23
- find_struct_member (char * name , char * str , struct ECPGstruct_member * members )
23
+ find_struct_member (char * name , char * str , struct ECPGstruct_member * members , int brace_level )
24
24
{
25
25
char * next = strchr (++ str , '.' ),
26
26
c = '\0' ;
@@ -41,12 +41,12 @@ find_struct_member(char *name, char *str, struct ECPGstruct_member * members)
41
41
switch (members -> type -> type )
42
42
{
43
43
case ECPGt_array :
44
- return (new_variable (name , ECPGmake_array_type (members -> type -> u .element , members -> type -> size )));
44
+ return (new_variable (name , ECPGmake_array_type (members -> type -> u .element , members -> type -> size ), brace_level ));
45
45
case ECPGt_struct :
46
46
case ECPGt_union :
47
- return (new_variable (name , ECPGmake_struct_type (members -> type -> u .members , members -> type -> type , members -> type -> struct_sizeof )));
47
+ return (new_variable (name , ECPGmake_struct_type (members -> type -> u .members , members -> type -> type , members -> type -> struct_sizeof ), brace_level ));
48
48
default :
49
- return (new_variable (name , ECPGmake_simple_type (members -> type -> type , members -> type -> size )));
49
+ return (new_variable (name , ECPGmake_simple_type (members -> type -> type , members -> type -> size ), brace_level ));
50
50
}
51
51
}
52
52
else
@@ -55,10 +55,10 @@ find_struct_member(char *name, char *str, struct ECPGstruct_member * members)
55
55
if (c == '-' )
56
56
{
57
57
next ++ ;
58
- return (find_struct_member (name , next , members -> type -> u .element -> u .members ));
58
+ return (find_struct_member (name , next , members -> type -> u .element -> u .members , brace_level ));
59
59
}
60
60
else
61
- return (find_struct_member (name , next , members -> type -> u .members ));
61
+ return (find_struct_member (name , next , members -> type -> u .members , brace_level ));
62
62
}
63
63
}
64
64
}
@@ -94,7 +94,7 @@ find_struct(char *name, char *next)
94
94
* next = c ;
95
95
next ++ ;
96
96
97
- return find_struct_member (name , next , p -> type -> u .element -> u .members );
97
+ return find_struct_member (name , next , p -> type -> u .element -> u .members , p -> brace_level );
98
98
}
99
99
else
100
100
{
@@ -107,7 +107,7 @@ find_struct(char *name, char *next)
107
107
/* restore the name, we will need it later on */
108
108
* next = c ;
109
109
110
- return find_struct_member (name , next , p -> type -> u .members );
110
+ return find_struct_member (name , next , p -> type -> u .members , p -> brace_level );
111
111
}
112
112
}
113
113
0 commit comments