summaryrefslogtreecommitdiff
path: root/binutils/resrc.c
diff options
context:
space:
mode:
authorKai Tietz <kai.tietz@onevision.com>2011-10-25 08:03:17 +0000
committerKai Tietz <kai.tietz@onevision.com>2011-10-25 08:03:17 +0000
commite6d3929942c1373d9c68f62ca2cc91362c5916cc (patch)
tree9c812f3b44610d39d457c25b5e4ceb26e33bed03 /binutils/resrc.c
parentdc174f6737086a456647b567ac3d3597e3087019 (diff)
downloadbinutils-redhat-e6d3929942c1373d9c68f62ca2cc91362c5916cc.tar.gz
2011-10-25 Kai Tietz <ktietz@redhat.com>
* winduni.h (unicode_from_ascii_len): New prototype. * winduni.c (unicode_from_ascii_len): New function. * windres.h (define_stringtable): Add additional length argument. * windres.c (define_stringtable): Add length argument for string. * rcparse.y (res_unicode_sizedstring): New rule. (res_unicode_sizedstring_concat): Likewise. (string_data): Adjust rule. 2011-10-25 Kai Tietz <ktietz@redhat.com> * binutils-all/windres/strtab4.rc: New test. * binutils-all/windres/strtab4.rsd: Likewise.
Diffstat (limited to 'binutils/resrc.c')
-rw-r--r--binutils/resrc.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/binutils/resrc.c b/binutils/resrc.c
index a0308dfd90..62bc9fe588 100644
--- a/binutils/resrc.c
+++ b/binutils/resrc.c
@@ -1591,8 +1591,9 @@ define_rcdata_number (rc_uint_type val, int dword)
void
define_stringtable (const rc_res_res_info *resinfo,
- rc_uint_type stringid, const unichar *string)
+ rc_uint_type stringid, const unichar *string, int len)
{
+ unichar *h;
rc_res_id id;
rc_res_resource *r;
@@ -1616,9 +1617,12 @@ define_stringtable (const rc_res_res_info *resinfo,
r->res_info = *resinfo;
}
-
- r->u.stringtable->strings[stringid & 0xf].length = unichar_len (string);
- r->u.stringtable->strings[stringid & 0xf].string = unichar_dup (string);
+ h = (unichar *) res_alloc ((len + 1) * sizeof (unichar));
+ if (len)
+ memcpy (h, string, len * sizeof (unichar));
+ h[len] = 0;
+ r->u.stringtable->strings[stringid & 0xf].length = (rc_uint_type) len;
+ r->u.stringtable->strings[stringid & 0xf].string = h;
}
void