diff options
Diffstat (limited to 'src/AsciiSink.c')
-rw-r--r-- | src/AsciiSink.c | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/src/AsciiSink.c b/src/AsciiSink.c index 29850ba..74587c6 100644 --- a/src/AsciiSink.c +++ b/src/AsciiSink.c @@ -296,7 +296,7 @@ static int GetTextWidth(TextWidget ctx, int current_width, XFontStruct *font, XawTextPosition from, int length) { - int i, width = 0; + int width = 0; XawTextBlock block; XawTextPosition pos = from; @@ -304,7 +304,7 @@ GetTextWidth(TextWidget ctx, int current_width, XFontStruct *font, pos = XawTextSourceRead(ctx->text.source, from, &block, length); length = (int)(length - (pos - from)); from = pos; - for (i = 0; i < block.length; i++) + for (int i = 0; i < block.length; i++) width += CharWidth((AsciiSinkObject)ctx->text.sink, font, current_width + width, (unsigned char)block.ptr[i]); @@ -340,7 +340,6 @@ void CalculateBearing(TextWidget ctx, XawTextPosition position, int x, int y, XawTextAnchor *anchor; XawTextEntity *entity; XawTextProperty *property; - XawTextPaintStruct *paint; XawTextBlock block; XFontStruct *font; @@ -373,7 +372,7 @@ void CalculateBearing(TextWidget ctx, XawTextPosition position, int x, int y, rbearing = font->per_char[c - font->min_char_or_byte2].rbearing - font->per_char[c - font->min_char_or_byte2].width; if (rbearing > 0) { - paint = XtNew(XawTextPaintStruct); + XawTextPaintStruct *paint = XtNew(XawTextPaintStruct); paint->next = sink->text_sink.paint->bearings; sink->text_sink.paint->bearings = paint; paint->x = x - (paint->width = CharWidth(sink, font, 0, c)); @@ -408,7 +407,7 @@ void CalculateBearing(TextWidget ctx, XawTextPosition position, int x, int y, (c >= font->min_char_or_byte2 && c <= font->max_char_or_byte2)) lbearing = font->per_char[c - font->min_char_or_byte2].lbearing; if (lbearing < 0) { - paint = XtNew(XawTextPaintStruct); + XawTextPaintStruct *paint = XtNew(XawTextPaintStruct); paint->next = sink->text_sink.paint->bearings; sink->text_sink.paint->bearings = paint; paint->x = x; @@ -442,10 +441,9 @@ AsciiPreparePaint(Widget w, int y, int line, XawTextAnchor *anchor; XawTextEntity *entity; XawTextProperty *property; - int i, ascent = 0, descent = 0, xl, xr, x = ctx->text.left_margin, bufsiz; + int i, ascent = 0, descent = 0, xl, xr, x = ctx->text.left_margin; XawTextBlock block; XFontStruct *font; - XawTextPaintStruct *paint; if (!sink->ascii_sink.echo) return; @@ -530,7 +528,9 @@ AsciiPreparePaint(Widget w, int y, int line, /* pass 2: feed the XawTextPaintStruct lists */ pos = from; while (pos < to) { - paint = XtNew(XawTextPaintStruct); + int bufsiz; + XawTextPaintStruct *paint = XtNew(XawTextPaintStruct); + paint->next = sink->text_sink.paint->paint; sink->text_sink.paint->paint = paint; paint->x = x; @@ -1462,13 +1462,14 @@ FindDistance(Widget w, XawTextPosition fromPos, int fromx, XFontStruct *font = sink->ascii_sink.font; Widget source = ctx->text.source; XawTextPosition idx, pos; - unsigned char c; XawTextBlock blk; int i, rWidth; pos = XawTextSourceRead(source, fromPos, &blk, toPos - fromPos); rWidth = 0; for (i = 0, idx = fromPos; idx < toPos; i++, idx++) { + unsigned char c; + if (i >= blk.length) { i = 0; pos = XawTextSourceRead(source, pos, &blk, toPos - pos); |