This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: windres: Optional dialog control data immediately follow the control description without alignment.


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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]