summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSadrul Habib Chowdhury <sadrul@users.sourceforge.net>2010-03-05 03:04:32 -0500
committerSadrul Habib Chowdhury <sadrul@users.sourceforge.net>2010-03-05 03:04:32 -0500
commit12a65d46a32b620914514f896fe51beb01507a52 (patch)
treee26c75f458b47d6b1375233f9cde7b6749f25e8b
parent9222a13ff3f7214f71a0c2821eff5a41efa0e08b (diff)
downloadscreen-12a65d46a32b620914514f896fe51beb01507a52.tar.gz
Fix screen refresh issues.
Some fix in pointer arithmetic seems to have fixed the screen refresh issues. Also, remove some comments.
-rw-r--r--src/ansi.c27
-rw-r--r--src/encoding.c22
-rw-r--r--src/resize.c4
3 files changed, 15 insertions, 38 deletions
diff --git a/src/ansi.c b/src/ansi.c
index 32135c8..0e0c480 100644
--- a/src/ansi.c
+++ b/src/ansi.c
@@ -381,14 +381,7 @@ register int len;
{
c = FromUtf8(c, &curr->w_decodestate);
if (c == -1)
- {
-#if 0
- FILE *f = fopen("/tmp/debug/utf-8", "a");
- fprintf(f, " %d ", ch);
- fclose(f);
-#endif
- continue;
- }
+ continue;
if (c == -2)
{
c = UCS_REPL;
@@ -398,14 +391,6 @@ register int len;
}
if (c > 0xff)
debug1("read UNICODE %04x\n", c);
-#if 0
- if (c & 0xffff0000)
- {
- FILE *f = fopen("/tmp/debug/utf-8", "a");
- fprintf(f, " %d ", ch);
- fclose(f);
- }
-#endif
}
#endif
@@ -2526,7 +2511,7 @@ int n, ys, ye, bce;
ml->colorx = null;
# endif
#endif
- bclear((char *)ml->image, p->w_width + 1);
+ bclear((char *)ml->image, (p->w_width + 1) * sizeof(int));
#ifdef COLOR
if (bce)
MBceLine(p, i, 0, p->w_width, bce);
@@ -2571,7 +2556,7 @@ int n, ys, ye, bce;
ml->colorx = null;
# endif
#endif
- bclear((char *)ml->image, p->w_width + 1);
+ bclear((char *)ml->image, (p->w_width + 1) * sizeof(int));
#ifdef COLOR
if (bce)
MBceLine(p, i, 0, p->w_width, bce);
@@ -2763,7 +2748,9 @@ int x, y;
ml = &p->w_mlines[y];
MKillDwRight(p, ml, x);
MKillDwLeft(p, ml, x + n - 1);
- bcopy(s, (char *)ml->image + x, n);
+ ip = ml->image + x;
+ for (i = 0; i <= n; i++)
+ *ip++ = *s++;
b = ml->attr + x;
for (i = n; i-- > 0;)
*b++ = r->attr;
@@ -2866,7 +2853,7 @@ int ys, ye;
debug2("MFindUsedLine: %d %d\n", ye, ys);
for (y = ye; y >= ys; y--, ml--)
{
- if (bcmp((char*)ml->image, blank, p->w_width))
+ if (bcmp((char*)ml->image, blank, p->w_width * sizeof(int)))
break;
if (ml->attr != null && bcmp((char*)ml->attr, null, p->w_width))
break;
diff --git a/src/encoding.c b/src/encoding.c
index 8b99b7c..be3ae62 100644
--- a/src/encoding.c
+++ b/src/encoding.c
@@ -557,13 +557,13 @@ int from, to;
for (i = 0; i < 2; i++)
{
if (rml[i].image == 0)
- rml[i].image = malloc(w);
+ rml[i].image = malloc(w * sizeof(int));
else
- rml[i].image = realloc(rml[i].image, w);
+ rml[i].image = realloc(rml[i].image, w * sizeof(int));
if (rml[i].font == 0)
- rml[i].font = malloc(w);
+ rml[i].font = malloc(w * sizeof(int));
else
- rml[i].font = realloc(rml[i].font, w);
+ rml[i].font = realloc(rml[i].font, w * sizeof(int));
if (rml[i].image == 0 || rml[i].font == 0)
{
maxlen = 0;
@@ -703,12 +703,12 @@ int c;
if (c >= 0x800)
{
AddChar((c & 0xf000) >> 12 | 0xe0);
- c = (c & 0x0fff) | 0x1000;
+ c = (c & 0x0fff) | 0x1000;
}
if (c >= 0x80)
{
AddChar((c & 0x1fc0) >> 6 ^ 0xc0);
- c = (c & 0x3f) | 0x80;
+ c = (c & 0x3f) | 0x80;
}
AddChar(c);
}
@@ -809,16 +809,6 @@ int c, *utf8charp;
*utf8charp = utf8char = (c & 0x80000000) ? c : 0;
if (utf8char)
return -1;
-#if 0
- if (c & 0xffff0000)
- {
- FILE *f = fopen("/tmp/debug/utf-8", "a");
- fprintf(f, " %x ", c);
- fclose(f);
- }
- if (c & 0xffff0000)
- c = UCS_REPL; /* sorry, only know 16bit Unicode */
-#endif
if (c >= 0xd800 && (c <= 0xdfff || c == 0xfffe || c == 0xffff))
c = UCS_REPL; /* illegal code */
return c;
diff --git a/src/resize.c b/src/resize.c
index c463f0f..430569c 100644
--- a/src/resize.c
+++ b/src/resize.c
@@ -452,7 +452,7 @@ int xf, xt, l, w;
{
int r = 0;
- bcopy((char *)mlf->image + xf, (char *)mlt->image + xt, l * sizeof(int));
+ bcopy((char *)(mlf->image + xf), (char *)(mlt->image + xt), l * sizeof(int));
if (mlf->attr != null && mlt->attr == null)
{
if ((mlt->attr = (unsigned char *)calloc(w, 1)) == 0)
@@ -467,7 +467,7 @@ int xf, xt, l, w;
mlt->font = (unsigned int *)null, r = -1;
}
if (mlt->font != (unsigned int *)null)
- bcopy((char *)mlf->font + xf, (char *)mlt->font + xt, l * sizeof(int));
+ bcopy((char *)(mlf->font + xf), (char *)(mlt->font + xt), l * sizeof(int));
#endif
#ifdef COLOR
if (mlf->color != null && mlt->color == null)