diff --git a/src/conio/ciolib.c b/src/conio/ciolib.c
index 065a81389c8823c64538bfa9861a9ab3b96e1aba..783be70e0d1635531e6def27f707ba94fd2c8481 100644
--- a/src/conio/ciolib.c
+++ b/src/conio/ciolib.c
@@ -435,7 +435,7 @@ CIOLIBEXPORT char * CIOLIBCALL ciolib_cgets(char *str)
 	CIOLIB_INIT();
 	
 	maxlen=*(unsigned char *)str;
-	while((ch=ciolib_getche())!='\n' && ch !='\r') {
+	while((ch=ciolib_getch())!='\n' && ch !='\r') {
 		switch(ch) {
 			case 0:	/* Skip extended keys */
 				ciolib_getche();
@@ -451,6 +451,7 @@ CIOLIBEXPORT char * CIOLIBCALL ciolib_cgets(char *str)
 				len--;
 				break;
 			default:
+				ciolib_putch(ch);
 				str[(len++)+2]=ch;
 				if(len==maxlen) {
 					str[len+2]=0;
@@ -460,6 +461,7 @@ CIOLIBEXPORT char * CIOLIBCALL ciolib_cgets(char *str)
 				break;
 		}
 	}
+	ciolib_putch(ch);
 	str[len+2]=0;
 	*((unsigned char *)(str+1))=(unsigned char)len;
 	return(&str[2]);