This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: windres: Optional dialog control data immediately follow the control description without alignment.
- From: Dmitry Timoshkov <dmitry at baikal dot ru>
- To: binutils at sourceware dot org
- Date: Tue, 17 Jan 2017 11:05:02 +0800
- Subject: Re: windres: Optional dialog control data immediately follow the control description without alignment.
- Authentication-results: sourceware.org; auth=none
- References: <20170109201934.50144d0e.dmitry@baikal.ru>
Hi,
Is there anything that could be done to get this patch reviewed, and if
it's ok committed?
Dmitry Timoshkov <dmitry@baikal.ru> wrote:
> Hi,
>
> this patch fixes the dialog optional control data generation and reading
> in windres.
>
> Thanks.
> ---
> binutils/ChangeLog | 8 ++++++++
> binutils/resbin.c | 3 ---
> binutils/testsuite/binutils-all/windres/controldata.rc | 6 ++++++
> .../testsuite/binutils-all/windres/controldata.rsd | 18 ++++++++++++++++++
> 4 files changed, 32 insertions(+), 3 deletions(-)
> create mode 100644 binutils/testsuite/binutils-all/windres/controldata.rc
> create mode 100644 binutils/testsuite/binutils-all/windres/controldata.rsd
>
> diff --git a/binutils/ChangeLog b/binutils/ChangeLog
> index b5e82fe..7e117e9 100644
> --- a/binutils/ChangeLog
> +++ b/binutils/ChangeLog
> @@ -1,3 +1,11 @@
> +2017-01-09 Dmitry Timoshkov <dmitry@baikal.ru>
> +
> + * resbin.c: Optional dialog control data immediately follow
> + the control description without alignment.
> + * testsuite/binutils-all/windres/controldata.rc: New test.
> + source.
> + * testsuite/binutils-all/windres/controldata.rsd: New test.
> +
> 2017-01-09 Alan Modra <amodra@gmail.com>
>
> * readelf.c (process_section_headers): Correct .rel.dyn/.rela.dyn
> diff --git a/binutils/resbin.c b/binutils/resbin.c
> index f836a5a..59072d6 100644
> --- a/binutils/resbin.c
> +++ b/binutils/resbin.c
> @@ -574,8 +574,6 @@ bin_to_res_dialog (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type length
> dc->data = NULL;
> else
> {
> - off = (off + 3) &~ 3;
> -
> if (length < off + datalen)
> toosmall (_("dialog control data"));
>
> @@ -1582,7 +1580,6 @@ res_to_bin_dialog (windres_bfd *wrbfd, rc_uint_type off, const rc_dialog *dialog
> {
> rc_uint_type saved_off = off;
> rc_uint_type old_off;
> - off += (4 - ((off - off_delta) & 3)) & 3;
>
> old_off = off;
> off = res_to_bin_rcdata (wrbfd, off, dc->data);
> diff --git a/binutils/testsuite/binutils-all/windres/controldata.rc b/binutils/testsuite/binutils-all/windres/controldata.rc
> new file mode 100644
> index 0000000..67b8df2
> --- /dev/null
> +++ b/binutils/testsuite/binutils-all/windres/controldata.rc
> @@ -0,0 +1,6 @@
> +1 DIALOGEX DISCARDABLE 0, 0, 200, 150
> +STYLE 0
> +BEGIN
> + CONTROL "evenlengthtext", -1, "TESTCONTROL", 0x50810000, 10,10,100,50 { 1,2,3,4,5 }
> + CONTROL "oddlengthtext", -1, "TESTCONTROL", 0x50810000, 10,60,100,50 { 1,2,3,4,5 }
> +END
> diff --git a/binutils/testsuite/binutils-all/windres/controldata.rsd b/binutils/testsuite/binutils-all/windres/controldata.rsd
> new file mode 100644
> index 0000000..1357e05
> --- /dev/null
> +++ b/binutils/testsuite/binutils-all/windres/controldata.rsd
> @@ -0,0 +1,18 @@
> + 0000 00000000 20000000 ffff0000 ffff0000 .... ...........
> + 0010 00000000 00000000 00000000 00000000 ................
> + 0020 d4000000 20000000 ffff0500 ffff0100 .... ...........
> + 0030 00000000 30100904 00000000 00000000 ....0...........
> + 0040 0100ffff 00000000 00000000 00000000 ................
> + 0050 02000000 0000c800 96000000 00000000 ................
> + 0060 00000000 00000000 00008150 0a000a00 ...........P....
> + 0070 64003200 ffffffff 54004500 53005400 d.2.....T.E.S.T.
> + 0080 43004f00 4e005400 52004f00 4c000000 C.O.N.T.R.O.L...
> + 0090 65007600 65006e00 6c006500 6e006700 e.v.e.n.l.e.n.g.
> + 00a0 74006800 74006500 78007400 00000a00 t.h.t.e.x.t.....
> + 00b0 01000200 03000400 05000000 00000000 ................
> + 00c0 00000000 00008150 0a003c00 64003200 .......P..<.d.2.
> + 00d0 ffffffff 54004500 53005400 43004f00 ....T.E.S.T.C.O.
> + 00e0 4e005400 52004f00 4c000000 6f006400 N.T.R.O.L...o.d.
> + 00f0 64006c00 65006e00 67007400 68007400 d.l.e.n.g.t.h.t.
> + 0100 65007800 74000000 0a000100 02000300 e.x.t...........
> + 0110 04000500 ....
> --
> 2.10.1
>
--
Dmitry.