[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] /srv/bzr/emacs/trunk r107051: Inhibit null-string composit
From: |
Kenichi Handa |
Subject: |
[Emacs-diffs] /srv/bzr/emacs/trunk r107051: Inhibit null-string composition component (Bug#6988). |
Date: |
Thu, 02 Feb 2012 09:32:49 +0900 |
User-agent: |
Bazaar (2.3.1) |
------------------------------------------------------------
revno: 107051 [merge]
committer: Kenichi Handa <address@hidden>
branch nick: trunk
timestamp: Thu 2012-02-02 09:32:49 +0900
message:
Inhibit null-string composition component (Bug#6988).
modified:
lisp/ChangeLog
lisp/composite.el
src/ChangeLog
src/xdisp.c
=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog 2012-02-01 08:31:29 +0000
+++ b/lisp/ChangeLog 2012-02-02 00:32:12 +0000
@@ -1,3 +1,8 @@
+2012-02-02 Kenichi Handa <address@hidden>
+
+ * composite.el (compose-region, compose-string): Signal error for
+ a null string component (Bug#6988).
+
2012-02-01 Chong Yidong <address@hidden>
* view.el (view-buffer-other-window, view-buffer-other-frame):
=== modified file 'lisp/composite.el'
--- a/lisp/composite.el 2011-11-27 04:43:11 +0000
+++ b/lisp/composite.el 2012-02-02 00:30:09 +0000
@@ -211,7 +211,7 @@
If it is a character, it is an alternate character to display instead
of the text in the region.
-If it is a string, the elements are alternate characters. In
+If it is a string, the elements are one or more alternate characters. In
this case, TAB element has a special meaning. If the first
character is TAB, the glyphs are displayed with left padding space
so that no pixel overlaps with the previous column. If the last
@@ -234,7 +234,9 @@
(let ((modified-p (buffer-modified-p))
(inhibit-read-only t))
(if (or (vectorp components) (listp components))
- (setq components (encode-composition-components components)))
+ (setq components (encode-composition-components components))
+ (if (= (length components) 0)
+ (error "Invalid composition component: %s" components)))
(compose-region-internal start end components modification-func)
(restore-buffer-modified-p modified-p)))
@@ -267,7 +269,9 @@
adjust the composition when it gets invalid because of a change of
text in the composition."
(if (or (vectorp components) (listp components))
- (setq components (encode-composition-components components)))
+ (setq components (encode-composition-components components))
+ (if (= (length components) 0)
+ (error "Invalid composition component: %s" components)))
(or start (setq start 0))
(or end (setq end (length string)))
(compose-string-internal string start end components modification-func)
=== modified file 'src/ChangeLog'
--- a/src/ChangeLog 2012-02-01 16:51:20 +0000
+++ b/src/ChangeLog 2012-02-02 00:32:12 +0000
@@ -1,3 +1,10 @@
+2012-02-02 Kenichi Handa <address@hidden>
+
+ * xdisp.c (BUILD_COMPOSITE_GLYPH_STRING): Initialize first_s to
+ NULL (Bug#6988).
+ (x_produce_glyphs): If the component of a composition is a null
+ string, set it->pixel_width to 1 to avoid zero-width glyph.
+
2012-02-01 Eli Zaretskii <address@hidden>
* ralloc.c (resize_bloc, r_alloc_sbrk): Don't call memmove if its
=== modified file 'src/xdisp.c'
--- a/src/xdisp.c 2012-01-19 07:21:25 +0000
+++ b/src/xdisp.c 2012-02-02 00:30:09 +0000
@@ -22738,7 +22738,7 @@
ptrdiff_t cmp_id = (row)->glyphs[area][START].u.cmp.id; \
struct composition *cmp = composition_table[cmp_id]; \
XChar2b *char2b; \
- struct glyph_string *first_s IF_LINT (= NULL); \
+ struct glyph_string *first_s = NULL; \
int n; \
\
char2b = (XChar2b *) alloca ((sizeof *char2b) * cmp->glyph_len); \
@@ -24400,7 +24400,7 @@
/* Initialize the bounding box. */
if (pcm)
{
- width = pcm->width;
+ width = cmp->glyph_len > 0 ? pcm->width : 0;
ascent = pcm->ascent;
descent = pcm->descent;
lbearing = pcm->lbearing;
@@ -24408,7 +24408,7 @@
}
else
{
- width = font->space_width;
+ width = cmp->glyph_len > 0 ? font->space_width : 0;
ascent = FONT_BASE (font);
descent = FONT_DESCENT (font);
lbearing = 0;
@@ -24595,6 +24595,10 @@
it->glyph_row->contains_overlapping_glyphs_p = 1;
it->pixel_width = cmp->pixel_width;
+ if (it->pixel_width == 0)
+ /* We assure that all visible glyphs have at least 1-pixel
+ width. */
+ it->pixel_width = 1;
it->ascent = it->phys_ascent = cmp->ascent;
it->descent = it->phys_descent = cmp->descent;
if (face->box != FACE_NO_BOX)
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] /srv/bzr/emacs/trunk r107051: Inhibit null-string composition component (Bug#6988).,
Kenichi Handa <=