summaryrefslogtreecommitdiff
path: root/giscanner/scannerparser.y
diff options
context:
space:
mode:
Diffstat (limited to 'giscanner/scannerparser.y')
-rw-r--r--giscanner/scannerparser.y18
1 files changed, 15 insertions, 3 deletions
diff --git a/giscanner/scannerparser.y b/giscanner/scannerparser.y
index 65ac5946..48e3c132 100644
--- a/giscanner/scannerparser.y
+++ b/giscanner/scannerparser.y
@@ -1088,12 +1088,24 @@ pointer
}
| '*' type_qualifier_list pointer
{
- $$ = gi_source_pointer_new ($3);
- $$->type_qualifier = $2;
+ GISourceType **base = &($3->base_type);
+
+ while (*base != NULL) {
+ base = &((*base)->base_type);
+ }
+ *base = gi_source_pointer_new (NULL);
+ (*base)->type_qualifier = $2;
+ $$ = $3;
}
| '*' pointer
{
- $$ = gi_source_pointer_new ($2);
+ GISourceType **base = &($2->base_type);
+
+ while (*base != NULL) {
+ base = &((*base)->base_type);
+ }
+ *base = gi_source_pointer_new (NULL);
+ $$ = $2;
}
;