diff --git a/src/sbbs3/ansiterm.cpp b/src/sbbs3/ansiterm.cpp index 99da18673f0ff690d8028ffdd0490de4d3390368..8b1620b0bf374a79af2570382f04914e4adcd96a 100644 --- a/src/sbbs3/ansiterm.cpp +++ b/src/sbbs3/ansiterm.cpp @@ -107,7 +107,7 @@ void sbbs_t::ansi_getlines() } } -void sbbs_t::ansi_getxy(int* x, int* y) +bool sbbs_t::ansi_getxy(int* x, int* y) { int rsp=0, ch; @@ -129,8 +129,10 @@ void sbbs_t::ansi_getxy(int* x, int* y) start=time(NULL); } else if(isdigit(ch) && rsp==2) { - (*y)*=10; - (*y)+=(ch&0xf); + if(y!=NULL) { + (*y)*=10; + (*y)+=(ch&0xf); + } start=time(NULL); } else if(ch==';' && rsp>=2) { @@ -138,8 +140,10 @@ void sbbs_t::ansi_getxy(int* x, int* y) start=time(NULL); } else if(isdigit(ch) && rsp==3) { - (*x)*=10; - (*x)+=(ch&0xf); + if(x!=NULL) { + (*x)*=10; + (*x)+=(ch&0xf); + } start=time(NULL); } else if(ch=='R' && rsp) @@ -149,7 +153,9 @@ void sbbs_t::ansi_getxy(int* x, int* y) } if(time(NULL)-start>TIMEOUT_ANSI_GETXY) { lprintf("Node %d !TIMEOUT in ansi_getxy", cfg.node_num); - break; + return(false); } } + + return(true); } diff --git a/src/sbbs3/sbbs.h b/src/sbbs3/sbbs.h index d66a2c0d4f6f3cee414d93866364c069008703fc..5f7d24c14d1bec64a662a70631b23665c6021100 100644 --- a/src/sbbs3/sbbs.h +++ b/src/sbbs3/sbbs.h @@ -338,7 +338,7 @@ public: /* ansi_term.cpp */ char * ansi(int atr); /* Returns ansi escape sequence for atr */ - void ansi_getxy(int* x, int* y); + bool ansi_getxy(int* x, int* y); void ansi_getlines(void); /* Command Shell Methods */