add xep bounds check in x_goto, maybe this will fix the problem the Motorola guys are havink
This commit is contained in:
parent
bb1c1e7dba
commit
2a833165a0
10
edit.c
10
edit.c
@ -26,7 +26,7 @@
|
|||||||
|
|
||||||
#include "sh.h"
|
#include "sh.h"
|
||||||
|
|
||||||
__RCSID("$MirOS: src/bin/mksh/edit.c,v 1.232 2012/03/31 19:20:12 tg Exp $");
|
__RCSID("$MirOS: src/bin/mksh/edit.c,v 1.233 2012/03/31 19:52:34 tg Exp $");
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* in later versions we might use libtermcap for this, but since external
|
* in later versions we might use libtermcap for this, but since external
|
||||||
@ -1191,10 +1191,6 @@ x_emacs(char *buf, size_t len)
|
|||||||
}
|
}
|
||||||
i = c | (x_curprefix << 8);
|
i = c | (x_curprefix << 8);
|
||||||
x_curprefix = 0;
|
x_curprefix = 0;
|
||||||
#ifdef DEBUG
|
|
||||||
if (xcp > xep)
|
|
||||||
abort();
|
|
||||||
#endif
|
|
||||||
switch ((*x_ftab[f].xf_func)(i)) {
|
switch ((*x_ftab[f].xf_func)(i)) {
|
||||||
case KSTD:
|
case KSTD:
|
||||||
if (!(x_ftab[f].xf_flags & XF_PREFIX))
|
if (!(x_ftab[f].xf_flags & XF_PREFIX))
|
||||||
@ -1518,7 +1514,9 @@ x_fword(int move)
|
|||||||
static void
|
static void
|
||||||
x_goto(char *cp)
|
x_goto(char *cp)
|
||||||
{
|
{
|
||||||
if (UTFMODE)
|
if (cp >= xep)
|
||||||
|
cp = xep;
|
||||||
|
else if (UTFMODE)
|
||||||
while ((cp > xbuf) && ((*cp & 0xC0) == 0x80))
|
while ((cp > xbuf) && ((*cp & 0xC0) == 0x80))
|
||||||
--cp;
|
--cp;
|
||||||
if (cp < xbp || cp >= utf_skipcols(xbp, x_displen)) {
|
if (cp < xbp || cp >= utf_skipcols(xbp, x_displen)) {
|
||||||
|
Loading…
Reference in New Issue
Block a user