Ticket #760 (new patch) — at Initial Version
Interactive sessions with HLLCompiler (and readline) never end
Reported by: | flh | Owned by: | |
---|---|---|---|
Priority: | normal | Milestone: | |
Component: | none | Version: | trunk |
Severity: | medium | Keywords: | |
Cc: | Language: | ||
Patch status: | new | Platform: | all |
Description
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.