diff options
| author | Colin Watson <[email protected]> | 2019-11-08 08:06:45 +0000 |
|---|---|---|
| committer | Colin Watson <[email protected]> | 2019-11-08 08:06:45 +0000 |
| commit | 8a245d5c1800627af4cefa99162a89c7a46d8842 (patch) | |
| tree | a25875ed1beb58c23a750fc3616db8066d320808 | |
| parent | 136763a4cc9ca3a4f59d05b79eede2159d6f441e (diff) | |
| download | grub-extras-master.tar.gz | |
GCC 9 has a new -Waddress-of-packed-member warning, enabled by default;
set_mode trips over this by taking the addresses of members of the
packed modeline structs. Use local variables to avoid this.
| -rw-r--r-- | 915resolution/915resolution.c | 37 |
1 files changed, 29 insertions, 8 deletions
diff --git a/915resolution/915resolution.c b/915resolution/915resolution.c index 9a73d5f..0091a66 100644 --- a/915resolution/915resolution.c +++ b/915resolution/915resolution.c @@ -758,13 +758,23 @@ static void set_mode(vbios_map * map, cardinal mode, cardinal x, cardinal y, car vbios_modeline_type2 * modeline = &res->modelines[j]; if (modeline->x1 == xprev && modeline->y1 == yprev) { + unsigned long clock; + word hsyncstart, hsyncend, hblank; + word vsyncstart, vsyncend, vblank; + modeline->x1 = modeline->x2 = x-1; modeline->y1 = modeline->y2 = y-1; - gtf_timings(x, y, freqs[j], &modeline->clock, - &modeline->hsyncstart, &modeline->hsyncend, - &modeline->hblank, &modeline->vsyncstart, - &modeline->vsyncend, &modeline->vblank); + gtf_timings(x, y, freqs[j], &clock, + &hsyncstart, &hsyncend, &hblank, + &vsyncstart, &vsyncend, &vblank); + modeline->clock = clock; + modeline->hsyncstart = hsyncstart; + modeline->hsyncend = hsyncend; + modeline->hblank = hblank; + modeline->vsyncstart = vsyncstart; + modeline->vsyncend = vsyncend; + modeline->vblank = vblank; if (htotal) modeline->htotal = htotal; @@ -790,13 +800,24 @@ static void set_mode(vbios_map * map, cardinal mode, cardinal x, cardinal y, car vbios_modeline_type3 * modeline = &res->modelines[j]; if (modeline->x1 == xprev && modeline->y1 == yprev) { + unsigned long clock; + word hsyncstart, hsyncend, hblank; + word vsyncstart, vsyncend, vblank; + modeline->x1 = modeline->x2 = x-1; modeline->y1 = modeline->y2 = y-1; - gtf_timings(x, y, freqs[j], &modeline->clock, - &modeline->hsyncstart, &modeline->hsyncend, - &modeline->hblank, &modeline->vsyncstart, - &modeline->vsyncend, &modeline->vblank); + gtf_timings(x, y, freqs[j], &clock, + &hsyncstart, &hsyncend, &hblank, + &vsyncstart, &vsyncend, &vblank); + modeline->clock = clock; + modeline->hsyncstart = hsyncstart; + modeline->hsyncend = hsyncend; + modeline->hblank = hblank; + modeline->vsyncstart = vsyncstart; + modeline->vsyncend = vsyncend; + modeline->vblank = vblank; + if (htotal) modeline->htotal = htotal; else |
