Introduction
Introduction Statistics Contact Development Disclaimer Help
Silence strict casting warnings and apply bidi mirroring - libgrapheme - unicod…
git clone git://git.suckless.org/libgrapheme
Log
Files
Refs
README
LICENSE
---
commit ba923230c7b25b0737d151c3f607a75b63676456
parent c2aa140007c3fe8f6b58839668219e9c8414865b
Author: Laslo Hunhold <[email protected]>
Date: Mon, 29 May 2023 08:37:11 +0200
Silence strict casting warnings and apply bidi mirroring
The mirroring-part must have been accidentally dropped in one previous
refactoring.
Signed-off-by: Laslo Hunhold <[email protected]>
Diffstat:
M src/bidirectional.c | 21 +++++++++++++--------
1 file changed, 13 insertions(+), 8 deletions(-)
---
diff --git a/src/bidirectional.c b/src/bidirectional.c
@@ -903,7 +903,7 @@ get_isolated_paragraph_level(const uint_least32_t *state, s…
/* determine paragraph level (rules P1-P3) and terminate on PDI */
for (stateoff = 0, isolate_level = 0; stateoff < statelen; stateoff++)…
- prop = get_state(STATE_PROP, state[stateoff]);
+ prop = (uint_least8_t)get_state(STATE_PROP, state[stateoff]);
if (prop == BIDI_PROP_PDI && isolate_level == 0) {
/*
@@ -1488,6 +1488,7 @@ get_line_embedding_levels(const uint_least32_t *linedata,…
/* rule L1.4 */
runsince = SIZE_MAX;
+ runlevel = -1;
for (i = 0, levlen = 0; i < linelen; i++) {
level = (int_least8_t)get_state(STATE_LEVEL, linedata[i]);
prop = (uint_least8_t)get_state(STATE_PRESERVED_PROP,
@@ -1512,8 +1513,8 @@ get_line_embedding_levels(const uint_least32_t *linedata,…
if (runsince == SIZE_MAX) {
/* a new run has begun */
runsince = levlen - 1; /* levlen > 0 */
- runlevel = get_state(STATE_PARAGRAPH_LEVEL,
- linedata[i]);
+ runlevel = (int_least8_t)get_state(
+ STATE_PARAGRAPH_LEVEL, linedata[i]);
}
} else {
/* sequence ended */
@@ -1539,7 +1540,7 @@ get_line_embedding_levels(const uint_least32_t *linedata,…
static inline int_least8_t
get_level_int8(const void *lev, size_t off)
{
- return ((int_least8_t *)lev)[off];
+ return ((const int_least8_t *)lev)[off];
}
static inline void
@@ -1561,7 +1562,7 @@ grapheme_bidirectional_get_line_embedding_levels(const ui…
static inline int_least8_t
get_level_uint32(const void *lev, size_t off)
{
- return (int_least8_t)((((uint_least32_t *)lev)[off] &
+ return (int_least8_t)((((const uint_least32_t *)lev)[off] &
UINT32_C(0x1FE00000)) >>
21) -
1;
@@ -1591,15 +1592,19 @@ grapheme_bidirectional_reorder_line(const uint_least32_…
size_t linelen, uint_least32_t *output,
size_t outputsize)
{
- size_t i, outputlen, first, last, j, k, l, laststart;
+ size_t i, outputlen, first, last, j, k, l /*, laststart*/;
int_least8_t level, min_odd_level = MAX_DEPTH + 2, max_level = 0;
uint_least32_t tmp;
- /* write output characters */
+ /* write output characters (and apply possible mirroring) */
for (i = 0, outputlen = 0; i < linelen; i++) {
if (get_state(STATE_LEVEL, linedata[i]) != -1) {
if (outputlen < outputsize) {
- output[outputlen] = line[i];
+ output[outputlen] =
+ (uint_least32_t)((int_least32_t)
+ line[i] +
+ get_mirror_offset(
+ line[i]));
}
outputlen++;
}
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.