bug-bash
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Bash 3.0 Official Patch 10


From: Chet Ramey
Subject: Bash 3.0 Official Patch 10
Date: Wed, 8 Sep 2004 16:01:02 -0400 (EDT)

                             BASH PATCH REPORT
                             =================

Bash-Release: 3.0
Patch-ID: bash30-010

Bug-Reported-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
Bug-Reference-ID: <E1Bo8Sq-0004u5-00@bouh>
Bug-Reference-URL: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=261142

Bug-Description:

When trying to auto-complete ~/../``/, I just get:
malloc: bashline.c:1340: assertion botched
free: start and end chunk sizes differ
last command: kill -9 %2
Stopping myself...


Patch:

*** ../bash-3.0/bashline.c      Mon Jul  5 23:22:12 2004
--- bashline.c  Thu Sep  2 16:00:12 2004
***************
*** 101,104 ****
--- 101,105 ----
  
  /* Helper functions for Readline. */
+ static int bash_directory_expansion __P((char **));
  static int bash_directory_completion_hook __P((char **));
  static int filename_completion_ignore __P((char **));
***************
*** 293,297 ****
        at = strchr (rl_completer_word_break_characters, '@');
        if ((at == 0 && on_or_off == 0) || (at != 0 && on_or_off != 0))
!         return;
  
        /* We have something to do.  Do it. */
--- 294,298 ----
        at = strchr (rl_completer_word_break_characters, '@');
        if ((at == 0 && on_or_off == 0) || (at != 0 && on_or_off != 0))
!         return old_value;
  
        /* We have something to do.  Do it. */
***************
*** 1407,1414 ****
          if (*hint_text == '~')
            {
!             int l, tl, vl;
              vl = strlen (val);
              tl = strlen (hint_text);
              l = vl - hint_len;        /* # of chars added */
              temp = (char *)xmalloc (l + 2 + tl);
              strcpy (temp, hint_text);
--- 1408,1424 ----
          if (*hint_text == '~')
            {
!             int l, tl, vl, dl;
!             char *rd;
              vl = strlen (val);
              tl = strlen (hint_text);
+ #if 0
              l = vl - hint_len;        /* # of chars added */
+ #else
+             rd = savestring (filename_hint);
+             bash_directory_expansion (&rd);
+             dl = strlen (rd);
+             l = vl - dl;              /* # of chars added */
+             free (rd);
+ #endif
              temp = (char *)xmalloc (l + 2 + tl);
              strcpy (temp, hint_text);
***************
*** 2188,2191 ****
--- 2198,2222 ----
  }
  
+ /* Simulate the expansions that will be performed by
+    rl_filename_completion_function.  This must be called with the address of
+    a pointer to malloc'd memory. */
+ static int
+ bash_directory_expansion (dirname)
+      char **dirname;
+ {
+   char *d;
+ 
+   d = savestring (*dirname);
+ 
+   if (rl_directory_rewrite_hook)
+     (*rl_directory_rewrite_hook) (&d);
+ 
+   if (rl_directory_completion_hook && (*rl_directory_completion_hook) (&d))
+     {
+       free (*dirname);
+       *dirname = d;
+     }
+ }
+   
  /* Handle symbolic link references and other directory name
     expansions while hacking completion. */

*** ../bash-3.0/patchlevel.h    Wed Aug 22 08:05:39 2001
--- patchlevel.h        Thu Sep  2 15:04:32 2004
***************
*** 26,30 ****
     looks for to find the patch level (for the sccs version string). */
  
! #define PATCHLEVEL 9
  
  #endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
     looks for to find the patch level (for the sccs version string). */
  
! #define PATCHLEVEL 10
  
  #endif /* _PATCHLEVEL_H_ */




reply via email to

[Prev in Thread] Current Thread [Next in Thread]