From: Christoph Mallon Date: Wed, 3 Jun 2009 10:21:18 +0000 (+0000) Subject: Emit an error, if a non-variadic function contains va_start. X-Git-Url: http://nsz.repo.hu/git/?a=commitdiff_plain;h=9e3b114e32965c9244e903e5001989d57d21bcd9;p=cparser Emit an error, if a non-variadic function contains va_start. [r26096] --- diff --git a/parser.c b/parser.c index d05ec2a..0e8658e 100644 --- a/parser.c +++ b/parser.c @@ -6863,9 +6863,12 @@ static expression_t *parse_va_start(void) expression_t *const expr = parse_assignment_expression(); if (expr->kind == EXPR_REFERENCE) { entity_t *const entity = expr->reference.entity; - if (entity->base.parent_scope != ¤t_function->parameters - || entity->base.next != NULL - || entity->kind != ENTITY_PARAMETER) { + if (!current_function->base.type->function.variadic) { + errorf(&expr->base.source_position, + "'va_start' used in non-variadic function"); + } else if (entity->base.parent_scope != ¤t_function->parameters || + entity->base.next != NULL || + entity->kind != ENTITY_PARAMETER) { errorf(&expr->base.source_position, "second argument of 'va_start' must be last parameter of the current function"); } else {