> I did a stupid thing. Tried to read into an array--which is indexed--but 
> the variable is already an associative array.
> 
>    declare -A foo
>    read -a foo <<<bar
> 
> The above should error instead of Segfault, yes?

Yes.  It certainly shouldn't crash the shell.  Try the attached patch and
let me know that it works for you.  Thanks for the report.

Chet

*** ../bash-4.2-patched/builtins/read.def       2011-01-04 11:43:36.000000000 
-0500
--- builtins/read.def   2011-06-21 10:31:02.000000000 -0400
***************
*** 456,460 ****
    add_unwind_protect (xfree, input_string);
    interrupt_immediately++;
-   terminate_immediately++;
  
    unbuffered_read = (nchars > 0) || (delim != '\n') || input_is_pipe;
--- 456,459 ----
***************
*** 513,516 ****
--- 512,516 ----
        if (retval <= 0)
        {
+         CHECK_TERMSIG;
          eof = 1;
          break;
***************
*** 623,627 ****
  
    interrupt_immediately--;
-   terminate_immediately--;
  
  #if defined (ARRAY_VARS)
--- 623,626 ----
***************
*** 643,646 ****
--- 642,651 ----
          return EXECUTION_FAILURE;     /* readonly or noassign */
        }
+       if (assoc_p (var))
+       {
+           builtin_error (_("%s: cannot convert associative to indexed 
array"), arrayname);
+         xfree (input_string);
+         return EXECUTION_FAILURE;     /* existing associative array */
+       }
        array_flush (array_cell (var));
  

``The lyf so short, the craft so long to lerne.'' - Chaucer
                 ``Ars longa, vita brevis'' - Hippocrates
Chet Ramey, ITS, CWRU    c...@case.edu    http://cnswww.cns.cwru.edu/~chet/

Reply via email to