petdance/scratch — Issue #70: readline_interactive method no longer returns PMCNULL on eof
Author: petdance
Created: 2011-11-01 04:24:46+00:00
State: open

Sending EOF to the standard input (typically: hitting Control-G) does not make HLLCompiler end interactive sessions when readline is used.

To reproduce: take your favorite HLL written with HLLCompiler, and a Parrot with readline, and run it without any argument. This should start an interactive session (i.e., you get a prompt for the language), but hitting {{{^G}}} makes HLLCompiler display a new prompt instead of exiting.

This bug has two origins:

* the "readline_interactive" method of FileHandle always returns a string (that's because of its type: when it seems to return NULL, it is actually converted to the empty string). On the other hand, HLLCompiler tests if the value returned by "readline_interactive" is null to detect EOF: this test is always false... The fix is to test EOF using the "get_bool" vtable of FileHandle; and

* the method "readline_interactive" never sets the EOF flag when readline is activated.

The attached patch fixes this.