summaryrefslogtreecommitdiff
path: root/src/fns.c
diff options
context:
space:
mode:
authorKenichi Handa <handa@m17n.org>2000-07-04 07:38:15 +0000
committerKenichi Handa <handa@m17n.org>2000-07-04 07:38:15 +0000
commit33f37824466d8deaf4780a15a0694e45e9ae96c6 (patch)
tree461bfe25611daa8e5fd0f70449bbb71641e6e9dc /src/fns.c
parentbe17069b715f28617d6375ef898f06450c80e6ad (diff)
downloademacs-33f37824466d8deaf4780a15a0694e45e9ae96c6.tar.gz
(concat): While copying text properties, make each composition
property value a copy.
Diffstat (limited to 'src/fns.c')
-rw-r--r--src/fns.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/src/fns.c b/src/fns.c
index 680fec8cc62..b4a67b4ebe4 100644
--- a/src/fns.c
+++ b/src/fns.c
@@ -826,12 +826,22 @@ concat (nargs, args, target_type, last_special)
if (num_textprops > 0)
{
+ Lisp_Object props;
+
for (argnum = 0; argnum < num_textprops; argnum++)
{
this = args[textprops[argnum].argnum];
- copy_text_properties (make_number (textprops[argnum].from),
- make_number (XSTRING (this)->size), this,
- make_number (textprops[argnum].to), val, Qnil);
+ props = text_property_list (this,
+ make_number (0),
+ make_number (XSTRING (this)->size),
+ Qnil);
+ /* If successive arguments have properites, be sure that the
+ value of `composition' property be the copy. */
+ if (argnum > 0
+ && textprops[argnum - 1].argnum + 1 == textprops[argnum].argnum)
+ make_composition_value_copy (props);
+ add_text_properties_from_list (val, props,
+ make_number (textprops[argnum].to));
}
}
return val;