diff options
author | 2007-09-22 14:36:18 +0000 | |
---|---|---|
committer | 2007-09-22 14:36:18 +0000 | |
commit | 08cd77c843a609822f46f56d42cd42ac7bce036c (patch) | |
tree | 5d905c0f250d8f323f7f8a3c31ed1be1896e490f | |
parent | rename functions and data structures for clarity (diff) | |
download | wireguard-openbsd-08cd77c843a609822f46f56d42cd42ac7bce036c.tar.xz wireguard-openbsd-08cd77c843a609822f46f56d42cd42ac7bce036c.zip |
Fix from ragge:
Fix lost initializers when an array comes after something else in
a struct. Reported in OpenBSD PR#5586.
-rw-r--r-- | usr.bin/pcc/cc/ccom/init.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/usr.bin/pcc/cc/ccom/init.c b/usr.bin/pcc/cc/ccom/init.c index bca2c4227fe..06f455772b0 100644 --- a/usr.bin/pcc/cc/ccom/init.c +++ b/usr.bin/pcc/cc/ccom/init.c @@ -1,4 +1,4 @@ -/* $OpenBSD: init.c,v 1.2 2007/09/15 22:04:38 ray Exp $ */ +/* $OpenBSD: init.c,v 1.3 2007/09/22 14:36:18 otto Exp $ */ /* * Copyright (c) 2004, 2007 Anders Magnusson (ragge@ludd.ltu.se). @@ -386,8 +386,12 @@ findoff(void) t = DECREF(t); o = ISPTR(t) ? SZPOINT(t) : is->in_sym->ssue->suesize; off += o * acalc(is, 1); - while (is->in_prev && ISARY(is->in_prev->in_t)) + while (is->in_prev && ISARY(is->in_prev->in_t)) { + if (is->in_prev->in_prev && + is->in_prev->in_prev->in_t == STRTY) + off += is->in_sym->soffset; is = is->in_prev; + } } } if (idebug>1) { |