117 lines
3.1 KiB
Plaintext
117 lines
3.1 KiB
Plaintext
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_ */
|