aboutsummaryrefslogtreecommitdiffstats
path: root/src/composite.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/composite.c')
-rw-r--r--src/composite.c31
1 files changed, 13 insertions, 18 deletions
diff --git a/src/composite.c b/src/composite.c
index 39c54fcfab3..9819805c399 100644
--- a/src/composite.c
+++ b/src/composite.c
@@ -216,7 +216,7 @@ get_composition_id (ptrdiff_t charpos, ptrdiff_t bytepos, ptrdiff_t nchars,
216 COMPONENTS (converted to a vector COMPONENTS-VEC) or, if it is 216 COMPONENTS (converted to a vector COMPONENTS-VEC) or, if it is
217 nil, vector of characters in the composition range. */ 217 nil, vector of characters in the composition range. */
218 if (FIXNUMP (components)) 218 if (FIXNUMP (components))
219 key = Fmake_vector (make_fixnum (1), components); 219 key = make_vector (1, components);
220 else if (STRINGP (components) || CONSP (components)) 220 else if (STRINGP (components) || CONSP (components))
221 key = Fvconcat (1, &components); 221 key = Fvconcat (1, &components);
222 else if (VECTORP (components)) 222 else if (VECTORP (components))
@@ -654,27 +654,22 @@ Lisp_Object
654composition_gstring_put_cache (Lisp_Object gstring, ptrdiff_t len) 654composition_gstring_put_cache (Lisp_Object gstring, ptrdiff_t len)
655{ 655{
656 struct Lisp_Hash_Table *h = XHASH_TABLE (gstring_hash_table); 656 struct Lisp_Hash_Table *h = XHASH_TABLE (gstring_hash_table);
657 EMACS_UINT hash; 657 Lisp_Object header = LGSTRING_HEADER (gstring);
658 Lisp_Object header, copy; 658 EMACS_UINT hash = h->test.hashfn (&h->test, header);
659 ptrdiff_t i;
660
661 header = LGSTRING_HEADER (gstring);
662 hash = h->test.hashfn (&h->test, header);
663 if (len < 0) 659 if (len < 0)
664 { 660 {
665 ptrdiff_t j, glyph_len = LGSTRING_GLYPH_LEN (gstring); 661 ptrdiff_t glyph_len = LGSTRING_GLYPH_LEN (gstring);
666 for (j = 0; j < glyph_len; j++) 662 for (len = 0; len < glyph_len; len++)
667 if (NILP (LGSTRING_GLYPH (gstring, j))) 663 if (NILP (LGSTRING_GLYPH (gstring, len)))
668 break; 664 break;
669 len = j;
670 } 665 }
671 666
672 copy = Fmake_vector (make_fixnum (len + 2), Qnil); 667 Lisp_Object copy = make_nil_vector (len + 2);
673 LGSTRING_SET_HEADER (copy, Fcopy_sequence (header)); 668 LGSTRING_SET_HEADER (copy, Fcopy_sequence (header));
674 for (i = 0; i < len; i++) 669 for (ptrdiff_t i = 0; i < len; i++)
675 LGSTRING_SET_GLYPH (copy, i, Fcopy_sequence (LGSTRING_GLYPH (gstring, i))); 670 LGSTRING_SET_GLYPH (copy, i, Fcopy_sequence (LGSTRING_GLYPH (gstring, i)));
676 i = hash_put (h, LGSTRING_HEADER (copy), copy, hash); 671 ptrdiff_t id = hash_put (h, LGSTRING_HEADER (copy), copy, hash);
677 LGSTRING_SET_ID (copy, make_fixnum (i)); 672 LGSTRING_SET_ID (copy, make_fixnum (id));
678 return copy; 673 return copy;
679} 674}
680 675
@@ -1759,7 +1754,7 @@ should be ignored. */)
1759 return gstring; 1754 return gstring;
1760 1755
1761 if (LGSTRING_GLYPH_LEN (gstring_work) < topos - frompos) 1756 if (LGSTRING_GLYPH_LEN (gstring_work) < topos - frompos)
1762 gstring_work = Fmake_vector (make_fixnum (topos - frompos + 2), Qnil); 1757 gstring_work = make_nil_vector (topos - frompos + 2);
1763 LGSTRING_SET_HEADER (gstring_work, header); 1758 LGSTRING_SET_HEADER (gstring_work, header);
1764 LGSTRING_SET_ID (gstring_work, Qnil); 1759 LGSTRING_SET_ID (gstring_work, Qnil);
1765 fill_gstring_body (gstring_work); 1760 fill_gstring_body (gstring_work);
@@ -1917,9 +1912,9 @@ syms_of_composite (void)
1917 staticpro (&gstring_work_headers); 1912 staticpro (&gstring_work_headers);
1918 gstring_work_headers = make_uninit_vector (8); 1913 gstring_work_headers = make_uninit_vector (8);
1919 for (i = 0; i < 8; i++) 1914 for (i = 0; i < 8; i++)
1920 ASET (gstring_work_headers, i, Fmake_vector (make_fixnum (i + 2), Qnil)); 1915 ASET (gstring_work_headers, i, make_nil_vector (i + 2));
1921 staticpro (&gstring_work); 1916 staticpro (&gstring_work);
1922 gstring_work = Fmake_vector (make_fixnum (10), Qnil); 1917 gstring_work = make_nil_vector (10);
1923 1918
1924 /* Text property `composition' should be nonsticky by default. */ 1919 /* Text property `composition' should be nonsticky by default. */
1925 Vtext_property_default_nonsticky 1920 Vtext_property_default_nonsticky