git.ucc.asn.au
/
tpg
/
acess2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fixed kernel segfault in VTerm (referenced possible NULL value)
[tpg/acess2.git]
/
Kernel
/
drv
/
vterm.c
diff --git
a/Kernel/drv/vterm.c
b/Kernel/drv/vterm.c
index
c2f0685
..
252f292
100644
(file)
--- a/
Kernel/drv/vterm.c
+++ b/
Kernel/drv/vterm.c
@@
-623,7
+623,7
@@
int VT_Terminal_IOCtl(tVFS_Node *Node, int Id, void *Data)
if( term->NewHeight )
ret = term->NewHeight;
else if( term->Mode == TERM_MODE_TEXT )
if( term->NewHeight )
ret = term->NewHeight;
else if( term->Mode == TERM_MODE_TEXT )
- ret = term->TextHeight
= *iData
;
+ ret = term->TextHeight;
else
ret = term->Height;
LEAVE('i', ret);
else
ret = term->Height;
LEAVE('i', ret);
@@
-657,7
+657,8
@@
void VT_SetTerminal(int ID)
tVideo_IOCtl_Pos pos;
pos.x = (gpVT_CurTerm->WritePos - gpVT_CurTerm->ViewPos) % gpVT_CurTerm->TextWidth;
pos.y = (gpVT_CurTerm->WritePos - gpVT_CurTerm->ViewPos) / gpVT_CurTerm->TextWidth;
tVideo_IOCtl_Pos pos;
pos.x = (gpVT_CurTerm->WritePos - gpVT_CurTerm->ViewPos) % gpVT_CurTerm->TextWidth;
pos.y = (gpVT_CurTerm->WritePos - gpVT_CurTerm->ViewPos) / gpVT_CurTerm->TextWidth;
- VFS_IOCtl(giVT_OutputDevHandle, VIDEO_IOCTL_SETCURSOR, &pos);
+ if( pos.x < gpVT_CurTerm->TextHeight )
+ VFS_IOCtl(giVT_OutputDevHandle, VIDEO_IOCTL_SETCURSOR, &pos);
}
if( gpVT_CurTerm->Mode == TERM_MODE_TEXT )
}
if( gpVT_CurTerm->Mode == TERM_MODE_TEXT )
@@
-842,7
+843,7
@@
void VT_int_ClearLine(tVTerm *Term, int Num)
{
int i;
tVT_Char *cell = &Term->Text[ Num*Term->TextWidth ];
{
int i;
tVT_Char *cell = &Term->Text[ Num*Term->TextWidth ];
- if( Num < 0 || Num >= Term->TextHeight ) return ;
+ if( Num < 0 || Num >= Term->TextHeight
* (giVT_Scrollback + 1)
) return ;
//ENTER("pTerm iNum", Term, Num);
for( i = Term->TextWidth; i--; )
{
//ENTER("pTerm iNum", Term, Num);
for( i = Term->TextWidth; i--; )
{
@@
-1072,8
+1073,6
@@
void VT_int_PutChar(tVTerm *Term, Uint32 Ch)
{
int base, i;
{
int base, i;
- //Debug("Scrolling entire buffer");
-
// Move back by one
Term->WritePos -= Term->TextWidth;
// Update the scren
// Move back by one
Term->WritePos -= Term->TextWidth;
// Update the scren
@@
-1117,6
+1116,7
@@
void VT_int_PutChar(tVTerm *Term, Uint32 Ch)
Term->WritePos -= Term->TextWidth;
VT_int_UpdateScreen( Term, 0 );
Term->WritePos += Term->TextWidth;
Term->WritePos -= Term->TextWidth;
VT_int_UpdateScreen( Term, 0 );
Term->WritePos += Term->TextWidth;
+ VT_int_ClearLine(Term, Term->WritePos / Term->TextWidth);
// Scroll
Term->ViewPos += Term->TextWidth;
// Scroll
Term->ViewPos += Term->TextWidth;
UCC
git Repository :: git.ucc.asn.au