aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--dissect.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/dissect.c b/dissect.c
index 0272ebd2..582e8fc3 100644
--- a/dissect.c
+++ b/dissect.c
@@ -342,7 +342,6 @@ again:
case EXPR_TYPE: // [struct T]; Why ???
case EXPR_VALUE:
case EXPR_FVALUE:
- case EXPR_GENERIC:
break; case EXPR_LABEL:
ret = &label_ctype;
@@ -472,6 +471,17 @@ again:
} while ((expr = expr->down));
}
+ break; case EXPR_GENERIC: {
+ struct type_expression *map;
+
+ do_expression(U_VOID, expr->control);
+
+ for (map = expr->map; map; map = map->next)
+ ret = do_expression(mode, map->expr);
+ if (expr->def)
+ ret = do_expression(mode, expr->def);
+ }
+
break; case EXPR_SYMBOL:
ret = report_symbol(mode, expr);
}