X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Ftextprop.c;h=12fa41fa201a0bc4188e0914bbf4b67f06bf8f10;hb=4be0b3a557679d8b63d70848d50f12af87f3f551;hp=3d84043e1a537cc332cf535d0cfc8801994e6ea3;hpb=29d7a4adc198a0aceee84fe0340797d36aba7a09;p=m17n%2Fm17n-lib.git diff --git a/src/textprop.c b/src/textprop.c index 3d84043..12fa41f 100644 --- a/src/textprop.c +++ b/src/textprop.c @@ -1444,23 +1444,26 @@ mtext__adjust_plist_for_change (MText *mt, int pos, int len1, int len2) for (plist = mt->plist; plist; plist = plist->next) { MInterval *head = find_interval (plist, pos2); - MInterval *tail = mt->plist->tail; + MInterval *tail = plist->tail; MTextProperty *prop; int i; - if (head->start == pos2) - head = head->prev; - while (tail != head) + if (head) { - for (i = 0; i < tail->nprops; i++) + if (head->start == pos2) + head = head->prev; + while (tail != head) { - prop = tail->stack[i]; - if (prop->start == tail->start) - prop->start += diff, prop->end += diff; + for (i = 0; i < tail->nprops; i++) + { + prop = tail->stack[i]; + if (prop->start == tail->start) + prop->start += diff, prop->end += diff; + } + tail->start += diff; + tail->end += diff; + tail = tail->prev; } - tail->start += diff; - tail->end += diff; - tail = tail->prev; } for (i = 0; i < tail->nprops; i++) tail->stack[i]->end += diff; @@ -2852,6 +2855,11 @@ mtext_serialize (MText *mt, int from, int to, MPlist *property_list) int n; M_CHECK_RANGE (mt, from, to, NULL, NULL); + if (mt->format != MTEXT_FORMAT_US_ASCII + && mt->format != MTEXT_FORMAT_UTF_8) + mtext__adjust_format (mt, MTEXT_FORMAT_UTF_8); + if (MTEXT_DATA (mt)[mtext_nbytes (mt)] != 0) + MTEXT_DATA (mt)[mtext_nbytes (mt)] = 0; doc = xmlParseMemory (XML_TEMPLATE, strlen (XML_TEMPLATE) + 1); node = xmlDocGetRootElement (doc);