diff --git a/lib/modules/Stdio.pmod/Readline.pike b/lib/modules/Stdio.pmod/Readline.pike
index 7e8c561682f83d8c3917c636a0097a992cd811cd..f1e353650fa606a31a51278d567c7ff6eca3ff75 100644
--- a/lib/modules/Stdio.pmod/Readline.pike
+++ b/lib/modules/Stdio.pmod/Readline.pike
@@ -1,4 +1,4 @@
-// $Id: Readline.pike,v 1.6 1999/03/23 18:01:48 marcus Exp $
+// $Id: Readline.pike,v 1.7 1999/03/23 18:30:06 marcus Exp $
 
 class OutputController
 {
@@ -333,7 +333,7 @@ class InputController
     return set_enabled(0);
   }
 
-  void run_blocking()
+  int run_blocking()
   {
     disable();
     string data = prefix;
@@ -343,12 +343,12 @@ class InputController
     {
       prefix = process_input(data);
       if (!enabled)
-	return;
+	return 0;
       data = prefix+infd->read(1024, 1);
       prefix = "";
       if(!data || !sizeof(data)) {
 	disable();
-	return;
+	return -1;
       }
     }
   }
@@ -956,9 +956,9 @@ string read()
   newline_func = read_newline;
   readtext = "";
   output_controller->enable();
-  input_controller->run_blocking();
+  int res = input_controller->run_blocking();
   set_nonblocking(oldnl);
-  return readtext;
+  return (res>=0 || sizeof(readtext)) && readtext;
 }
 
 void enable_history(object(History)|int hist)