Fixed buffer overun for too wide menus
This commit is contained in:
parent
95d99561f9
commit
3083762d4c
@ -10,6 +10,8 @@ ______________________________________________________________________
|
|||||||
Notes for GoldED+ 1.1.5, /snapshot/
|
Notes for GoldED+ 1.1.5, /snapshot/
|
||||||
______________________________________________________________________
|
______________________________________________________________________
|
||||||
|
|
||||||
|
- Fixed buffer overun for too wide menus.
|
||||||
|
|
||||||
+ Added new config file token: XlatCharSetAlias "charset" "alias1" "alias2"...
|
+ Added new config file token: XlatCharSetAlias "charset" "alias1" "alias2"...
|
||||||
that defines charset aliases for import tables.
|
that defines charset aliases for import tables.
|
||||||
|
|
||||||
|
@ -132,6 +132,9 @@ int wopen(int srow, int scol, int erow, int ecol, int btype, int battr, int watt
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ecol >= gvid->numcols)
|
||||||
|
ecol = gvid->numcols - 1;
|
||||||
|
|
||||||
// see if window is to have a border
|
// see if window is to have a border
|
||||||
int border = (btype==5) ? NO : YES;
|
int border = (btype==5) ? NO : YES;
|
||||||
|
|
||||||
|
@ -41,6 +41,10 @@
|
|||||||
#include <gwinall.h>
|
#include <gwinall.h>
|
||||||
#include <gwinhelp.h>
|
#include <gwinhelp.h>
|
||||||
|
|
||||||
|
#if defined(__USE_ALLOCA__)
|
||||||
|
#include <malloc.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
// ------------------------------------------------------------------
|
// ------------------------------------------------------------------
|
||||||
|
|
||||||
@ -198,10 +202,14 @@ static void close_window(int w)
|
|||||||
|
|
||||||
static void disp_item(_item_t *witem,int bar)
|
static void disp_item(_item_t *witem,int bar)
|
||||||
{
|
{
|
||||||
|
#if defined(__USE_ALLOCA__)
|
||||||
|
char *buf = (char *)alloca(sizeof(vatch)*gvid->numcols);
|
||||||
|
#else
|
||||||
|
__extension__ char buf[sizeof(vatch)*gvid->numcols];
|
||||||
|
#endif
|
||||||
char ch;
|
char ch;
|
||||||
int chattr;
|
int chattr;
|
||||||
_wrec_t* whp;
|
_wrec_t* whp;
|
||||||
char buf[256];
|
|
||||||
register const char* p;
|
register const char* p;
|
||||||
register vatch* ptr=(vatch*)buf;
|
register vatch* ptr=(vatch*)buf;
|
||||||
int i, textend,width,wcol,found=NO;
|
int i, textend,width,wcol,found=NO;
|
||||||
@ -214,6 +222,7 @@ static void disp_item(_item_t *witem,int bar)
|
|||||||
width = calc_bar_width(gwin.cmenu,witem);
|
width = calc_bar_width(gwin.cmenu,witem);
|
||||||
textend = gwin.cmenu->textpos+strlen(p)-1;
|
textend = gwin.cmenu->textpos+strlen(p)-1;
|
||||||
wgotoxy(witem->wrow,wcol=witem->wcol);
|
wgotoxy(witem->wrow,wcol=witem->wcol);
|
||||||
|
if (width > (gvid->numcols-2)) width = gvid->numcols - 2;
|
||||||
|
|
||||||
// display separators
|
// display separators
|
||||||
if (witem->fmask & M_SEPAR)
|
if (witem->fmask & M_SEPAR)
|
||||||
|
Reference in New Issue
Block a user