Index: lib/libedit/map.c =================================================================== --- lib/libedit/map.c (revision 342855) +++ lib/libedit/map.c (working copy) @@ -1260,6 +1260,7 @@ el_bindings_t *bp, *ep; int cmd; int key; + int argi; if (argv == NULL) return -1; @@ -1267,7 +1268,7 @@ map = el->el_map.key; ntype = XK_CMD; key = rem = 0; - for (argc = 1; (p = argv[argc]) != NULL; argc++) + for (argi = 1; argi < argc && (p = argv[argi]) != NULL; argi++) if (p[0] == '-') switch (p[1]) { case 'a': @@ -1313,13 +1314,13 @@ else break; - if (argv[argc] == NULL) { + if (argi == argc) { map_print_all_keys(el); return 0; } if (key) - in = argv[argc++]; - else if ((in = parse__string(inbuf, argv[argc++])) == NULL) { + in = argv[argi++]; + else if ((in = parse__string(inbuf, argv[argi++])) == NULL) { (void) fprintf(el->el_errfile, "" FSTR ": Invalid \\ or ^ in instring.\n", argv[0]); @@ -1338,7 +1339,7 @@ map[(unsigned char) *in] = ED_UNASSIGNED; return 0; } - if (argv[argc] == NULL) { + if (argi == argc) { if (key) terminal_print_arrow(el, in); else @@ -1346,7 +1347,7 @@ return 0; } #ifdef notyet - if (argv[argc + 1] != NULL) { + if (argv[argi + 1] != NULL) { bindkeymacro_usage(); return -1; } @@ -1355,7 +1356,7 @@ switch (ntype) { case XK_STR: case XK_EXE: - if ((out = parse__string(outbuf, argv[argc])) == NULL) { + if ((out = parse__string(outbuf, argv[argi])) == NULL) { (void) fprintf(el->el_errfile, "" FSTR ": Invalid \\ or ^ in outstring.\n", argv[0]); return -1; @@ -1368,10 +1369,10 @@ break; case XK_CMD: - if ((cmd = parse_cmd(el, argv[argc])) == -1) { + if ((cmd = parse_cmd(el, argv[argi])) == -1) { (void) fprintf(el->el_errfile, "" FSTR ": Invalid command `" FSTR "'.\n", - argv[0], argv[argc]); + argv[0], argv[argi]); return -1; } if (key)