SOURCES: bash32-004 (NEW), bash32-005 (NEW), bash32-006 (NEW), bas...

glen glen at pld-linux.org
Mon Dec 18 11:13:33 CET 2006


Author: glen                         Date: Mon Dec 18 10:13:33 2006 GMT
Module: SOURCES                       Tag: HEAD
---- Log message:
- official patches

---- Files affected:
SOURCES:
   bash32-004 (NONE -> 1.1)  (NEW), bash32-005 (NONE -> 1.1)  (NEW), bash32-006 (NONE -> 1.1)  (NEW), bash32-007 (NONE -> 1.1)  (NEW), bash32-008 (NONE -> 1.1)  (NEW)

---- Diffs:

================================================================
Index: SOURCES/bash32-004
diff -u /dev/null SOURCES/bash32-004:1.1
--- /dev/null	Mon Dec 18 11:13:33 2006
+++ SOURCES/bash32-004	Mon Dec 18 11:13:28 2006
@@ -0,0 +1,96 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release: 3.2
+Patch-ID: bash32-004
+
+Bug-Reported-by:	Stuart Shelton <srcshelton at gmail.com>
+Bug-Reference-ID:	<619141e40610261203y6cda5aa6i23cb24c7aeba996e at mail.gmail.com>
+Bug-Reference-URL:	
+
+Bug-Description:
+
+A bug in the parameter pattern substitution implementation treated a pattern
+whose first character was `/' (after expansion) as specifying global
+replacement.
+
+Patch:
+
+*** ../bash-3.2/subst.c	Tue Sep 19 08:35:09 2006
+--- subst.c	Thu Oct 26 09:17:50 2006
+***************
+*** 5707,5712 ****
+--- 5707,5717 ----
+    vtype &= ~VT_STARSUB;
+  
+    mflags = 0;
++   if (patsub && *patsub == '/')
++     {
++       mflags |= MATCH_GLOBREP;
++       patsub++;
++     }
+  
+    /* Malloc this because expand_string_if_necessary or one of the expansion
+       functions in its call chain may free it on a substitution error. */
+***************
+*** 5741,5753 ****
+      }
+  
+    /* ksh93 doesn't allow the match specifier to be a part of the expanded
+!      pattern.  This is an extension. */
+    p = pat;
+!   if (pat && pat[0] == '/')
+!     {
+!       mflags |= MATCH_GLOBREP|MATCH_ANY;
+!       p++;
+!     }
+    else if (pat && pat[0] == '#')
+      {
+        mflags |= MATCH_BEG;
+--- 5746,5757 ----
+      }
+  
+    /* ksh93 doesn't allow the match specifier to be a part of the expanded
+!      pattern.  This is an extension.  Make sure we don't anchor the pattern
+!      at the beginning or end of the string if we're doing global replacement,
+!      though. */
+    p = pat;
+!   if (mflags & MATCH_GLOBREP)
+!     mflags |= MATCH_ANY;
+    else if (pat && pat[0] == '#')
+      {
+        mflags |= MATCH_BEG;
+*** ../bash-3.2/tests/new-exp.right	Thu Aug 10 12:00:00 2006
+--- tests/new-exp.right	Sun Oct 29 16:03:36 2006
+***************
+*** 430,436 ****
+  Case06---1---A B C::---
+  Case07---3---A:B:C---
+  Case08---3---A:B:C---
+! ./new-exp.tests: line 506: /${$(($#-1))}: bad substitution
+  argv[1] = <a>
+  argv[2] = <b>
+  argv[3] = <c>
+--- 430,436 ----
+  Case06---1---A B C::---
+  Case07---3---A:B:C---
+  Case08---3---A:B:C---
+! ./new-exp.tests: line 506: ${$(($#-1))}: bad substitution
+  argv[1] = <a>
+  argv[2] = <b>
+  argv[3] = <c>
+*** ../bash-3.2/patchlevel.h	Thu Apr 13 08:31:04 2006
+--- patchlevel.h	Mon Oct 16 14:22:54 2006
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 3
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 4
+  
+  #endif /* _PATCHLEVEL_H_ */

================================================================
Index: SOURCES/bash32-005
diff -u /dev/null SOURCES/bash32-005:1.1
--- /dev/null	Mon Dec 18 11:13:33 2006
+++ SOURCES/bash32-005	Mon Dec 18 11:13:28 2006
@@ -0,0 +1,223 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release: 3.2
+Patch-ID: bash32-005
+
+Bug-Reported-by:	Stuart Shelton <stuart at openobjects.com>
+Bug-Reference-ID:	<453F7CC8.6030907 at openobjects.com>
+Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2006-10/msg00127.html
+
+Bug-Description:
+
+A missing extern declaration for `asprintf' caused `double' arguments to be
+passed as `0', leading to incorrect results.  Additionally, a bug in the
+replacement asprintf/snprintf function caused an infinite loop when passed
+0 arguments to the floating point conversions under some circumstances.
+
+Patch:
+
+*** ../bash-3.2/builtins/printf.def	Mon Sep 18 08:48:42 2006
+--- builtins/printf.def	Tue Oct 31 08:19:44 2006
+***************
+*** 49,54 ****
+--- 49,60 ----
+  #  define INT_MIN		(-2147483647-1)
+  #endif
+  
++ #if defined (PREFER_STDARG)
++ #  include <stdarg.h>
++ #else
++ #  include <varargs.h>
++ #endif
++ 
+  #include <stdio.h>
+  #include <chartypes.h>
+  
+***************
+*** 151,156 ****
+--- 157,166 ----
+  #define SKIP1 "#'-+ 0"
+  #define LENMODS "hjlLtz"
+  
++ #ifndef HAVE_ASPRINTF
++ extern int asprintf __P((char **, const char *, ...)) __attribute__((__format__ (printf, 2, 3)));
++ #endif
++ 
+  static void printf_erange __P((char *));
+  static int printstr __P((char *, char *, int, int, int));
+  static int tescape __P((char *, char *, int *));
+
+
+*** ../bash-3.2/lib/sh/snprintf.c	Thu Apr  6 09:48:40 2006
+--- lib/sh/snprintf.c	Sat Oct 28 00:00:13 2006
+***************
+*** 471,476 ****
+--- 476,483 ----
+  	  10^x ~= r
+   * log_10(200) = 2;
+   * log_10(250) = 2;
++  *
++  * NOTE: do not call this with r == 0 -- an infinite loop results.
+   */
+  static int
+  log_10(r)
+***************
+*** 576,583 ****
+      { 
+        integral_part[0] = '0';
+        integral_part[1] = '\0';
+!       fraction_part[0] = '0';
+!       fraction_part[1] = '\0';
+        if (fract)
+  	*fract = fraction_part;
+        return integral_part;
+--- 583,593 ----
+      { 
+        integral_part[0] = '0';
+        integral_part[1] = '\0';
+!       /* The fractional part has to take the precision into account */
+!       for (ch = 0; ch < precision-1; ch++)
+!  	fraction_part[ch] = '0';
+!       fraction_part[ch] = '0';
+!       fraction_part[ch+1] = '\0';
+        if (fract)
+  	*fract = fraction_part;
+        return integral_part;
+***************
+*** 805,810 ****
+--- 815,821 ----
+        PUT_CHAR(*tmp, p);
+        tmp++;
+      }
++ 
+    PAD_LEFT(p);
+  }
+  
+***************
+*** 972,982 ****
+    if ((p->flags & PF_THOUSANDS) && grouping && (t = groupnum (tmp)))
+      tmp = t;
+  
+    /* calculate the padding. 1 for the dot */
+    p->width = p->width -
+  	    ((d > 0. && p->justify == RIGHT) ? 1:0) -
+  	    ((p->flags & PF_SPACE) ? 1:0) -
+! 	    strlen(tmp) - p->precision - 1;
+    PAD_RIGHT(p);  
+    PUT_PLUS(d, p, 0.);
+    PUT_SPACE(d, p, 0.);
+--- 983,1003 ----
+    if ((p->flags & PF_THOUSANDS) && grouping && (t = groupnum (tmp)))
+      tmp = t;
+  
++   if ((*p->pf == 'g' || *p->pf == 'G') && (p->flags & PF_ALTFORM) == 0)
++     {
++       /* smash the trailing zeros unless altform */
++       for (i = strlen(tmp2) - 1; i >= 0 && tmp2[i] == '0'; i--)
++         tmp2[i] = '\0'; 
++       if (tmp2[0] == '\0')
++ 	p->precision = 0;
++     }
++ 
+    /* calculate the padding. 1 for the dot */
+    p->width = p->width -
+  	    ((d > 0. && p->justify == RIGHT) ? 1:0) -
+  	    ((p->flags & PF_SPACE) ? 1:0) -
+! 	    strlen(tmp) - p->precision -
+! 	    ((p->precision != 0 || (p->flags & PF_ALTFORM)) ? 1 : 0);	/* radix char */
+    PAD_RIGHT(p);  
+    PUT_PLUS(d, p, 0.);
+    PUT_SPACE(d, p, 0.);
+***************
+*** 991,1001 ****
+    if (p->precision != 0 || (p->flags & PF_ALTFORM))
+      PUT_CHAR(decpoint, p);  /* put the '.' */
+  
+-   if ((*p->pf == 'g' || *p->pf == 'G') && (p->flags & PF_ALTFORM) == 0)
+-     /* smash the trailing zeros unless altform */
+-     for (i = strlen(tmp2) - 1; i >= 0 && tmp2[i] == '0'; i--)
+-       tmp2[i] = '\0'; 
+- 
+    for (; *tmp2; tmp2++)
+      PUT_CHAR(*tmp2, p); /* the fraction */
+    
+--- 1012,1017 ----
+***************
+*** 1011,1024 ****
+    char *tmp, *tmp2;
+    int j, i;
+  
+!   if (chkinfnan(p, d, 1) || chkinfnan(p, d, 2))
+      return;	/* already printed nan or inf */
+  
+    GETLOCALEDATA(decpoint, thoussep, grouping);
+    DEF_PREC(p);
+!   j = log_10(d);
+!   d = d / pow_10(j);  /* get the Mantissa */
+!   d = ROUND(d, p);		  
+    tmp = dtoa(d, p->precision, &tmp2);
+  
+    /* 1 for unit, 1 for the '.', 1 for 'e|E',
+--- 1027,1045 ----
+    char *tmp, *tmp2;
+    int j, i;
+  
+!   if (d != 0 && (chkinfnan(p, d, 1) || chkinfnan(p, d, 2)))
+      return;	/* already printed nan or inf */
+  
+    GETLOCALEDATA(decpoint, thoussep, grouping);
+    DEF_PREC(p);
+!   if (d == 0.)
+!     j = 0;
+!   else
+!     {
+!       j = log_10(d);
+!       d = d / pow_10(j);  /* get the Mantissa */
+!       d = ROUND(d, p);		  
+!     }
+    tmp = dtoa(d, p->precision, &tmp2);
+  
+    /* 1 for unit, 1 for the '.', 1 for 'e|E',
+***************
+*** 1076,1081 ****
+--- 1097,1103 ----
+         PUT_CHAR(*tmp, p);
+         tmp++;
+       }
++ 
+     PAD_LEFT(p);
+  }
+  #endif
+***************
+*** 1358,1364 ****
+  		STAR_ARGS(data);
+  		DEF_PREC(data);
+  		d = GETDOUBLE(data);
+! 		i = log_10(d);
+  		/*
+  		 * for '%g|%G' ANSI: use f if exponent
+  		 * is in the range or [-4,p] exclusively
+--- 1380,1386 ----
+  		STAR_ARGS(data);
+  		DEF_PREC(data);
+  		d = GETDOUBLE(data);
+! 		i = (d != 0.) ? log_10(d) : -1;
+  		/*
+  		 * for '%g|%G' ANSI: use f if exponent
+  		 * is in the range or [-4,p] exclusively
+*** ../bash-3.2/patchlevel.h	Thu Apr 13 08:31:04 2006
+--- patchlevel.h	Mon Oct 16 14:22:54 2006
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 4
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 5
+  
+  #endif /* _PATCHLEVEL_H_ */

================================================================
Index: SOURCES/bash32-006
diff -u /dev/null SOURCES/bash32-006:1.1
--- /dev/null	Mon Dec 18 11:13:33 2006
+++ SOURCES/bash32-006	Mon Dec 18 11:13:28 2006
@@ -0,0 +1,45 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release: 3.2
+Patch-ID: bash32-006
+
+Bug-Reported-by:	ebb9 at byu.net
+Bug-Reference-ID:	<45540862.9030900 at byu.net>
+Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2006-11/msg00017.html
+			http://lists.gnu.org/archive/html/bug-bash/2006-11/msg00016.html
+
+Bug-Description:
+
+In some cases, code that is intended to be used in the presence of multibyte
+characters is called when no such characters are present, leading to incorrect
+display position calculations and incorrect redisplay.
+
+Patch:
+
+*** ../bash-3.2-patched/lib/readline/display.c	Thu Sep 14 14:20:12 2006
+--- lib/readline/display.c	Mon Nov 13 17:55:57 2006
+***************
+*** 2381,2384 ****
+--- 2409,2414 ----
+    if (end <= start)
+      return 0;
++   if (MB_CUR_MAX == 1 || rl_byte_oriented)
++     return (end - start);
+  
+    memset (&ps, 0, sizeof (mbstate_t));
+*** ../bash-3.2/patchlevel.h	Thu Apr 13 08:31:04 2006
+--- patchlevel.h	Mon Oct 16 14:22:54 2006
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 5
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 6
+  
+  #endif /* _PATCHLEVEL_H_ */

================================================================
Index: SOURCES/bash32-007
diff -u /dev/null SOURCES/bash32-007:1.1
--- /dev/null	Mon Dec 18 11:13:33 2006
+++ SOURCES/bash32-007	Mon Dec 18 11:13:28 2006
@@ -0,0 +1,55 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release: 3.2
+Patch-ID: bash32-007
+
+Bug-Reported-by:	jidanni at jidanni.org
+Bug-Reference-ID:	<E1Gkg12-00017D-Fm at jidanni.org>
+Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2006-11/msg00039.html
+
+Bug-Description:
+
+When removing the current or previous job from the jobs list, bash incorrectly
+resets the current job under some circumstances.
+
+Patch:
+
+*** ../bash-3.2-patched/jobs.c	Sat Jul 29 16:40:48 2006
+--- jobs.c	Fri Nov 24 14:50:01 2006
+***************
+*** 985,990 ****
+    if (temp == 0)
+      return;
+-   if (job_index == js.j_current || job_index == js.j_previous)
+-     reset_current ();
+  
+    if ((dflags & DEL_NOBGPID) == 0)
+--- 985,988 ----
+***************
+*** 1029,1032 ****
+--- 1027,1033 ----
+    else if (jobs[js.j_firstj] == 0 || jobs[js.j_lastj] == 0)
+      reset_job_indices ();
++ 
++   if (job_index == js.j_current || job_index == js.j_previous)
++     reset_current ();
+  }
+
+*** ../bash-3.2/patchlevel.h	Thu Apr 13 08:31:04 2006
+--- patchlevel.h	Mon Oct 16 14:22:54 2006
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 6
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 7
+  
+  #endif /* _PATCHLEVEL_H_ */
+
+  

================================================================
Index: SOURCES/bash32-008
diff -u /dev/null SOURCES/bash32-008:1.1
--- /dev/null	Mon Dec 18 11:13:33 2006
+++ SOURCES/bash32-008	Mon Dec 18 11:13:28 2006
@@ -0,0 +1,48 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release: 3.2
+Patch-ID: bash32-008
+
+Bug-Reported-by:	Linda Walsh <bash at tlinx.org>
+Bug-Reference-ID:	<456041FD.8000605 at tlinx.org>
+Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2006-11/msg00040.html
+
+Bug-Description:
+
+When checking pathnames from the command hash table (e.g., when the `checkhash'
+shell option is enabled), a bug causes bash to delete and re-lookup each
+command.
+
+Patch:
+
+*** ../bash-3.2-patched/findcmd.c	Wed Aug 17 16:49:54 2005
+--- findcmd.c	Fri Nov 24 10:48:37 2006
+***************
+*** 309,313 ****
+      {
+        st = file_status (hashed_file);
+!       if ((st ^ (FS_EXISTS | FS_EXECABLE)) != 0)
+  	{
+  	  phash_remove (pathname);
+--- 309,313 ----
+      {
+        st = file_status (hashed_file);
+!       if ((st & (FS_EXISTS|FS_EXECABLE)) != (FS_EXISTS|FS_EXECABLE))
+  	{
+  	  phash_remove (pathname);
+*** ../bash-3.2/patchlevel.h	Thu Apr 13 08:31:04 2006
+--- patchlevel.h	Mon Oct 16 14:22:54 2006
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 7
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 8
+  
+  #endif /* _PATCHLEVEL_H_ */
================================================================


More information about the pld-cvs-commit mailing list