Handle typerefs in get_qualified_type().
authorChristoph Mallon <christoph.mallon@gmx.de>
Sun, 14 Sep 2008 15:16:20 +0000 (15:16 +0000)
committerChristoph Mallon <christoph.mallon@gmx.de>
Sun, 14 Sep 2008 15:16:20 +0000 (15:16 +0000)
[r21941]

type.c

diff --git a/type.c b/type.c
index 2eba180..a8705a4 100644 (file)
--- a/type.c
+++ b/type.c
@@ -761,9 +761,9 @@ type_t *get_unqualified_type(type_t *type)
        return result;
 }
 
-type_t *get_qualified_type(type_t *type, type_qualifiers_t const qual)
+type_t *get_qualified_type(type_t *orig_type, type_qualifiers_t const qual)
 {
-       assert(!is_typeref(type));
+       type_t *type = skip_typeref(orig_type);
 
        type_t *copy;
        if (is_type_array(type)) {
@@ -772,13 +772,13 @@ type_t *get_qualified_type(type_t *type, type_qualifiers_t const qual)
                type_t *qual_element_type = get_qualified_type(element_type, qual);
 
                if (qual_element_type == element_type)
-                       return type;
+                       return orig_type;
 
                copy                     = duplicate_type(type);
                copy->array.element_type = qual_element_type;
        } else {
                if ((type->base.qualifiers & qual) == qual)
-                       return type;
+                       return orig_type;
 
                copy                   = duplicate_type(type);
                copy->base.qualifiers |= qual;