be less aggressive in clearing blocks to protect against:

int
main(int argc, char *argv[])
{
	int rv;

	if ((rv = ({ int _ret = 1; if (argc == 1) {} _ret; })) != 0)
	    printf("%d\n", rv);
	return 0;
}
This commit is contained in:
christos 2016-08-19 10:58:15 +00:00
parent 84823ddb63
commit 175128e719
2 changed files with 6 additions and 6 deletions

View File

@ -1,5 +1,5 @@
%{
/* $NetBSD: cgram.y,v 1.79 2016/07/31 22:38:04 dholland Exp $ */
/* $NetBSD: cgram.y,v 1.80 2016/08/19 10:58:15 christos Exp $ */
/*
* Copyright (c) 1996 Christopher G. Demetriou. All Rights Reserved.
@ -35,7 +35,7 @@
#include <sys/cdefs.h>
#if defined(__RCSID) && !defined(lint)
__RCSID("$NetBSD: cgram.y,v 1.79 2016/07/31 22:38:04 dholland Exp $");
__RCSID("$NetBSD: cgram.y,v 1.80 2016/08/19 10:58:15 christos Exp $");
#endif
#include <stdlib.h>
@ -1458,7 +1458,7 @@ stmnt_list:
expr_stmnt:
expr T_SEMI {
expr($1, 0, 0, 1);
expr($1, 0, 0, 0);
ftflg = 0;
}
| T_SEMI {

View File

@ -1,4 +1,4 @@
/* $NetBSD: func.c,v 1.25 2013/04/19 17:43:05 christos Exp $ */
/* $NetBSD: func.c,v 1.26 2016/08/19 10:58:15 christos Exp $ */
/*
* Copyright (c) 1994, 1995 Jochen Pohl
@ -37,7 +37,7 @@
#include <sys/cdefs.h>
#if defined(__RCSID) && !defined(lint)
__RCSID("$NetBSD: func.c,v 1.25 2013/04/19 17:43:05 christos Exp $");
__RCSID("$NetBSD: func.c,v 1.26 2016/08/19 10:58:15 christos Exp $");
#endif
#include <stdlib.h>
@ -538,7 +538,7 @@ if1(tnode_t *tn)
tn = cconv(tn);
if (tn != NULL)
tn = promote(NOOP, 0, tn);
expr(tn, 0, 1, 1);
expr(tn, 0, 1, 0);
pushctrl(T_IF);
}