Hi all,

When trying to parse a string as if it has been read from the inputrc
file, using the 'rl_parse_and_bind(char *line)' function, I get a
segmentation fault when passing any non-empy string. I run Archlinux
with readline version 'readline 6.3.006-1'.

The following C program is a minimal reproduction of the bug.

    /*
     * A modified readline example
     * (taken from
    http://cnswww.cns.cwru.edu/php/chet/readline/readline.html)
     * to demonstrate a bug in the rl_parse_and_bind(char*) function.
     *
     * compile with "gcc readline-bug-example.c -lreadline -o
    readline-bug-example"
     * rl version: readline 6.3.006-1
     */
    #include <stdio.h>
    #include <stdlib.h>
    #include <readline/readline.h>

    #define PARSE_STRING    "set completion-ignore-case on"

    int main() {
        /* A static variable for holding the line. */
        static char *line_read = (char *) NULL;

        /* TODO the next line causes a segmentation fault for
         * any non-empty string;
         */
        rl_parse_and_bind(PARSE_STRING);

        while (line_read = readline("> ")) {
            printf("You entered '%s'\n", line_read);
            /* If the buffer has already been allocated,
            return the memory to the free pool. */
            if (line_read) {
              free (line_read);
              line_read = (char *) NULL;
            }
        }
        exit(0);
    }

Executing the above program in gdb outputs: "Program received signal
SIGSEGV, Segmentation fault.
0x00007ffff7bb3285 in rl_parse_and_bind () from /usr/lib/libreadline.so.6"

Any ideas on how to fix this?

Regards


_______________________________________________
Bug-readline mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/bug-readline

Reply via email to