summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEli Zaretskii <eliz@gnu.org>2013-03-05 20:12:25 +0200
committerEli Zaretskii <eliz@gnu.org>2013-03-05 20:12:25 +0200
commit05e193f1706f5d9846530e734d0271b15b9a818c (patch)
treeb8bd20d10eb3528a638276f6f80c8fd2c074e1d8
parentd37e489360181dca771d0cffb4f7a84c715cb3dc (diff)
Don't sync charpos and bytepos in bidi_resolve_explicit_1.
src/bidi.c (bidi_resolve_explicit_1): Don't call CHAR_TO_BYTE or bidi_count_bytes, as the callers now arrange for bidi_it->charpos to be in sync with bidi_it->bytepos. Suggested by Dmitry Antipov <dmantipov@yandex.ru>.
-rw-r--r--src/ChangeLog7
-rw-r--r--src/bidi.c14
2 files changed, 16 insertions, 5 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 23071b03be..c4b4703e59 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,10 @@
+2013-03-05 Eli Zaretskii <eliz@gnu.org>
+
+ * bidi.c (bidi_resolve_explicit_1): Don't call CHAR_TO_BYTE or
+ bidi_count_bytes, as the callers now arrange for bidi_it->charpos
+ to be in sync with bidi_it->bytepos. Suggested by Dmitry Antipov
+ <dmantipov@yandex.ru>.
+
2013-03-05 Paul Eggert <eggert@cs.ucla.edu>
Fix a build failure on OpenBSD 4.x and MirBSD.
diff --git a/src/bidi.c b/src/bidi.c
index 364d7e500b..57d154bc54 100644
--- a/src/bidi.c
+++ b/src/bidi.c
@@ -1353,15 +1353,19 @@ bidi_resolve_explicit_1 (struct bidi_it *bidi_it)
: bidi_it->string.s);
if (bidi_it->charpos < 0)
- bidi_it->charpos = 0;
- bidi_it->bytepos = bidi_count_bytes (p, 0, 0, bidi_it->charpos,
- bidi_it->string.unibyte);
+ bidi_it->charpos = bidi_it->bytepos = 0;
+ eassert (bidi_it->bytepos == bidi_count_bytes (p, 0, 0,
+ bidi_it->charpos,
+ bidi_it->string.unibyte));
}
else
{
if (bidi_it->charpos < BEGV)
- bidi_it->charpos = BEGV;
- bidi_it->bytepos = CHAR_TO_BYTE (bidi_it->charpos);
+ {
+ bidi_it->charpos = BEGV;
+ bidi_it->bytepos = BEGV_BYTE;
+ }
+ eassert (bidi_it->bytepos == CHAR_TO_BYTE (bidi_it->charpos));
}
}
/* Don't move at end of buffer/string. */