[w3m-dev 02436] fix segmentation fault in main.c

closes: #482763 segmentation fault in main.c
This commit is contained in:
Fumitoshi UKAI
2001-11-19 07:58:24 +00:00
parent 40c3eefb1f
commit d6a9d1dc35
2 changed files with 17 additions and 16 deletions

View File

@@ -1,3 +1,8 @@
2001-11-19 Hironori Sakamoto <hsaka@mth.biglobe.ne.jp>
* main.c (GetWord): [w3m-dev 02436] fix segmentation fault in main.c
closes: #482763 segmentation fault in main.c
2001-11-19 Fumitoshi UKAI <ukai@debian.or.jp> 2001-11-19 Fumitoshi UKAI <ukai@debian.or.jp>
* gc/.cvsignore: * gc/.cvsignore:

28
main.c
View File

@@ -1,4 +1,4 @@
/* $Id: main.c,v 1.7 2001/11/16 22:02:00 ukai Exp $ */ /* $Id: main.c,v 1.8 2001/11/19 07:58:24 ukai Exp $ */
#define MAINPROGRAM #define MAINPROGRAM
#include "fm.h" #include "fm.h"
#include <signal.h> #include <signal.h>
@@ -4416,27 +4416,23 @@ GetWord(Buffer * buf)
{ {
Line *l = buf->currentLine; Line *l = buf->currentLine;
char *lb; char *lb;
int i, b, e, pos = buf->pos; int b, e;
if (l == NULL) if (l == NULL)
return NULL; return NULL;
lb = l->lineBuf; lb = l->lineBuf;
i = pos; e = buf->pos;
while (!IS_ALPHA(lb[i]) && i >= 0) while (e > 0 && !IS_ALPHA(lb[e]))
i--; e--;
pos = i; if (!IS_ALPHA(lb[e]))
while (IS_ALPHA(lb[i]) && i >= 0)
i--;
i++;
if (!IS_ALPHA(lb[i]))
return NULL; return NULL;
b = i; b = e;
i = pos; while (b > 0 && IS_ALPHA(lb[b-1]))
while (IS_ALPHA(lb[i]) && i <= l->len - 1) b--;
i++; while (e < l->len && IS_ALPHA(lb[e]))
e = i - 1; e++;
return Strnew_charp_n(&lb[b], e - b + 1)->ptr; return Strnew_charp_n(&lb[b], e - b)->ptr;
} }
#ifdef DICT #ifdef DICT