diff options
Diffstat (limited to 'giscanner/scannerparser.y')
-rw-r--r-- | giscanner/scannerparser.y | 18 |
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; } ; |