Description of Problem: Slrn: Hit 'L' to get a selection of available newsgroups. Hit 'delete' key. Result: Console or terminal emulator gives an endless series of bells, slrn stops to accept user input. Problem goes away when using a vanilla S-Lang 1.4.4 build from source. Version-Release number of selected component (if applicable): Slrn: 0.9.7.3 built from source S-Lang: slang-1.4.4-4.i386.rpm How Reproducible: Every time Steps to Reproduce: 1. Open slrn on console or in arbitrary terminal emulator 2. Press 'L' to select newsgroups 3. Press 'delete' key Actual Results: The console/terminal emulator gives a neverending series of bells. Slrn stops to accept user input, and has to be killed. Default kill is enough. Expected Results: Performing the steps when using a vanilla S-Lang build from source gives one bell and prints a '~' in the line editor. Additional Information: Problem was reported on usenet in news.software.readers, and has been confirmed for RedHat 7.2 by other posters. Problem is absent in current Debian unstable. So far, the bug only shows up in slrn, but since using another S-Lang library fixes it, it really seems to be a problem with RH's S-Lang package. Slrn maintainer thinks so, too.
Modification: Problem apparently results from incorrect delete key configuration. Putting 'setkey readline del "^[[3~" in the slrn config file solves it. But since the problem is present when using RH 7.2's original S-Lang 1.4.4 and slrn 0.9.7.1 packages, I still consider it a bug.
I have a similar problem with a pager called most. Pressing any key which is NOT used by the program causes it to go into an infinite beeping loop. Downgrading slang to the version shipped with RH 7.1 fixes the problem. Recompiling and relinking to the newer version of slang does not fix it. This would certainly appear to be a bug in slang-1.4.4-4 which was not in slang-1.4.2-2.
The problem is still present in RH 7.3 and is not present in the pristine sources. The patch slang-1.4.5-keymap.patch changes the function SLang_do_key so that if a key is hit which is not defined, that key is unget again. So the next call to SLang_do_key tries to get the same key which is unget once again. The result is an infinite loop as the application keeps getting the same key which is not defined over and over. This is definitely a bug, which has, I suspect, been introduced into slang as a workaround to solve a problem in a buggy application. The documentation says quite clearly that SLang_do_key should return NULL if the key is not defined and not that it should unget the key. This is hardly what one would intuitively expect and it breaks other applications. The fix is simply to remove the patch and fix whatever application caused the patch to be added in the first place.
Patch removed in 1.4.5-4.