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 */