Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package readline for openSUSE:Factory 
checked in at 2024-08-20 16:12:17
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/readline (Old)
 and      /work/SRC/openSUSE:Factory/.readline.new.2698 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "readline"

Tue Aug 20 16:12:17 2024 rev:17 rq:1194673 version:8.2.MACRO

Changes:
--------
--- /work/SRC/openSUSE:Factory/readline/readline.changes        2024-01-17 
22:14:16.508738749 +0100
+++ /work/SRC/openSUSE:Factory/.readline.new.2698/readline.changes      
2024-08-20 16:12:19.063480697 +0200
@@ -1,0 +2,17 @@
+Mon Aug 19 09:02:51 UTC 2024 - Dr. Werner Fink <wer...@suse.de>
+
+- Add upstream patches
+  * readline82-011
+   Some systems (e.g., macOS) send signals early on in interactive
+   initialization, so readline should retry a failed open of the init file.
+  * readline82-012
+    If a user happens to bind do-lowercase-version to something that isn't a
+    capital letter, so _rl_to_lower doesn't change anything and the result is
+    still bound to do-lowercase-version, readline can recurse infinitely.
+  * readline82-013
+    When readline is accumulating bytes until it reads a complete multibyte
+    character, reading a byte that makes the multibyte character invalid can
+    result in discarding the bytes in the partial character.
+- Port patch readline-8.2.dif
+
+-------------------------------------------------------------------

New:
----
  readline82-011
  readline82-011.sig
  readline82-012
  readline82-012.sig
  readline82-013
  readline82-013.sig

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ readline.spec ++++++
--- /var/tmp/diff_new_pack.KRPfnz/_old  2024-08-20 16:12:21.499581887 +0200
+++ /var/tmp/diff_new_pack.KRPfnz/_new  2024-08-20 16:12:21.499581887 +0200
@@ -46,6 +46,9 @@
 Patch108:       readline82-008
 Patch109:       readline82-009
 Patch110:       readline82-010
+Patch111:       readline82-011
+Patch112:       readline82-012
+Patch113:       readline82-013
 Source101:      readline82-001.sig
 Source102:      readline82-002.sig
 Source103:      readline82-003.sig
@@ -56,6 +59,9 @@
 Source108:      readline82-008.sig
 Source109:      readline82-009.sig
 Source110:      readline82-010.sig
+Source111:      readline82-011.sig
+Source112:      readline82-012.sig
+Source113:      readline82-013.sig
 # local patches
 Patch200:       readline-%{rversion}.dif
 Patch201:       readline-6.3-input.dif
@@ -138,6 +144,9 @@
 %patch -P108 -p0
 %patch -P109 -p0
 %patch -P110 -p0
+%patch -P111 -p0
+%patch -P112 -p0
+%patch -P113 -p0
 # local patches
 %patch -P201 -p2 -b .zerotty
 %patch -P202 -p2 -b .conf

++++++ readline-8.2.dif ++++++
--- /var/tmp/diff_new_pack.KRPfnz/_old  2024-08-20 16:12:21.619586872 +0200
+++ /var/tmp/diff_new_pack.KRPfnz/_new  2024-08-20 16:12:21.623587038 +0200
@@ -5,10 +5,9 @@
  doc/readline.3     |   11 +++++++++++
  examples/fileman.c |    2 +-
  history.h          |    1 +
- readline.c         |    7 +++++--
  readline.h         |    3 ++-
  support/shobj-conf |    5 +++--
- 9 files changed, 28 insertions(+), 13 deletions(-)
+ 8 files changed, 23 insertions(+), 11 deletions(-)
 
 --- Makefile.in
 +++ Makefile.in        2022-04-28 12:16:56.148759888 +0000
@@ -120,22 +119,6 @@
  #  include <readline/rlstdc.h>
  #  include <readline/rltypedefs.h>
  #endif
---- readline.c
-+++ readline.c 2022-04-28 12:16:56.152759816 +0000
-@@ -906,8 +906,11 @@ _rl_dispatch_subseq (register int key, K
-       {
-         /* Special case rl_do_lowercase_version (). */
-         if (func == rl_do_lowercase_version)
--          /* Should we do anything special if key == ANYOTHERKEY? */
--          return (_rl_dispatch (_rl_to_lower ((unsigned char)key), map));
-+          {
-+            if (key == ANYOTHERKEY)
-+              return -1;
-+            return (_rl_dispatch (_rl_to_lower ((unsigned char)key), map));
-+          }
- 
-         rl_executing_keymap = map;
-         rl_executing_key = key;
 --- readline.h
 +++ readline.h 2022-04-28 12:17:48.115828027 +0000
 @@ -32,6 +32,7 @@ extern "C" {













++++++ readline82-011 ++++++
                           READLINE PATCH REPORT
                           =====================

Readline-Release: 8.2
Patch-ID: readline82-011

Bug-Reported-by:        Grisha Levit <grishale...@gmail.com>
Bug-Reference-ID:       
<CAMu=brqwa_inkiewchpfmtruhfraanoo8pjy7vckqrkuvqd...@mail.gmail.com>
Bug-Reference-URL:      
https://lists.gnu.org/archive/html/bug-bash/2024-02/msg00075.html

Bug-Description:

Patch (apply with `patch -p0'):

Some systems (e.g., macOS) send signals early on in interactive initialization,
so readline should retry a failed open of the init file.

*** ../readline-8.2-patched/bind.c      Wed Feb  9 11:02:22 2022
--- bind.c      Tue Apr 23 15:07:13 2024
***************
*** 979,987 ****
    int i, file;
  
!   file = -1;
!   if (((file = open (filename, O_RDONLY, 0666)) < 0) || (fstat (file, &finfo) 
< 0))
      {
        if (file >= 0)
        close (file);
        return ((char *)NULL);
      }
--- 969,986 ----
    int i, file;
  
!   file = open (filename, O_RDONLY, 0666);
!   /* If the open is interrupted, retry once */
!   if (file < 0 && errno == EINTR)
      {
+       RL_CHECK_SIGNALS ();
+       file = open (filename, O_RDONLY, 0666);
+     }
+   
+   if ((file < 0) || (fstat (file, &finfo) < 0))
+     {
+       i = errno;
        if (file >= 0)
        close (file);
+       errno = i;
        return ((char *)NULL);
      }
***************
*** 992,999 ****
--- 991,1001 ----
    if (file_size != finfo.st_size || file_size + 1 < file_size)
      {
+       i = errno;
        if (file >= 0)
        close (file);
  #if defined (EFBIG)
        errno = EFBIG;
+ #else
+       errno = i;
  #endif
        return ((char *)NULL);

*** ../readline-8.2/patchlevel  2013-11-15 08:11:11.000000000 -0500
--- patchlevel  2014-03-21 08:28:40.000000000 -0400
***************
*** 1,3 ****
  # Do not edit -- exists only for use by patch
  
! 10
--- 1,3 ----
  # Do not edit -- exists only for use by patch
  
! 11

++++++ readline82-012 ++++++
                           READLINE PATCH REPORT
                           =====================

Readline-Release: 8.2
Patch-ID: readline82-012

Bug-Reported-by:        Grisha Levit <grishale...@gmail.com>
Bug-Reference-ID:       
<CAMu=broah+41uumyt89fpqt8fsatj-d6mzzmpv2hzyjtcbv...@mail.gmail.com>
Bug-Reference-URL:      
https://lists.gnu.org/archive/html/bug-readline/2023-11/msg00019.html

Bug-Description:

If a user happens to bind do-lowercase-version to something that isn't a
capital letter, so _rl_to_lower doesn't change anything and the result is
still bound to do-lowercase-version, readline can recurse infinitely.

Patch (apply with `patch -p0'):

*** ../readline-8.2-patched/readline.c  Thu Aug 11 18:35:37 2022
--- readline.c  Fri Feb  2 12:05:36 2024
***************
*** 900,905 ****
          /* Special case rl_do_lowercase_version (). */
          if (func == rl_do_lowercase_version)
!           /* Should we do anything special if key == ANYOTHERKEY? */
!           return (_rl_dispatch (_rl_to_lower ((unsigned char)key), map));
  
          rl_executing_keymap = map;
--- 912,926 ----
          /* Special case rl_do_lowercase_version (). */
          if (func == rl_do_lowercase_version)
!           {
!             /* Should we do anything special if key == ANYOTHERKEY? */
!             newkey = _rl_to_lower ((unsigned char)key);
!             if (newkey != key)
!               return (_rl_dispatch (newkey, map));
!             else
!               {
!                 rl_ding ();           /* gentle failure */
!                 return 0;
!               }
!           }
  
          rl_executing_keymap = map;
***************
*** 1110,1114 ****
        func = m[ANYOTHERKEY].function;
        if (type == ISFUNC && func == rl_do_lowercase_version)
!       r = _rl_dispatch (_rl_to_lower ((unsigned char)key), map);
        else if (type == ISFUNC)
        {
--- 1131,1139 ----
        func = m[ANYOTHERKEY].function;
        if (type == ISFUNC && func == rl_do_lowercase_version)
!       {
!         int newkey = _rl_to_lower ((unsigned char)key);
!         /* check that there is actually a lowercase version to avoid infinite 
recursion */
!         r = (newkey != key) ? _rl_dispatch (newkey, map) : 1;
!       }
        else if (type == ISFUNC)
        {

*** ../readline-8.2-patched/isearch.c   Thu Aug 11 18:35:37 2022
--- isearch.c   Fri Feb  2 12:05:36 2024
***************
*** 429,433 ****
          f = cxt->keymap[c].function;
          if (f == rl_do_lowercase_version)
!           f = cxt->keymap[_rl_to_lower (c)].function;
        }
  
--- 431,439 ----
          f = cxt->keymap[c].function;
          if (f == rl_do_lowercase_version)
!           {
!             f = cxt->keymap[_rl_to_lower (c)].function;
!             if (f == rl_do_lowercase_version)
!               f = rl_insert;
!           }
        }
  

*** ../readline-8.2/patchlevel  2013-11-15 08:11:11.000000000 -0500
--- patchlevel  2014-03-21 08:28:40.000000000 -0400
***************
*** 1,3 ****
  # Do not edit -- exists only for use by patch
  
! 11
--- 1,3 ----
  # Do not edit -- exists only for use by patch
  
! 12

++++++ readline82-013 ++++++
                           READLINE PATCH REPORT
                           =====================

Readline-Release: 8.2
Patch-ID: readline82-013

Bug-Reported-by:        Grisha Levit <grishale...@gmail.com>
Bug-Reference-ID:       
<CAMu=Brrv5qKY6LPfw8PxqNXNO8rNsZo0Fb=BcFb-uHObWPqnrw@mail.gmail.
Bug-Reference-URL:      
https://lists.gnu.org/archive/html/bug-bash/2023-04/msg00082.html

Bug-Description:

When readline is accumulating bytes until it reads a complete multibyte
character, reading a byte that makes the multibyte character invalid can
result in discarding the bytes in the partial character.

Patch (apply with `patch -p0'):

*** ../readline-8.2-patched/text.c      Mon May  1 09:37:52 2023
--- text.c      Mon May 29 12:22:29 2023
***************
*** 86,90 ****
  rl_insert_text (const char *string)
  {
!   register int i, l;
  
    l = (string && *string) ? strlen (string) : 0;
--- 86,91 ----
  rl_insert_text (const char *string)
  {
!   register int i;
!   size_t l;
  
    l = (string && *string) ? strlen (string) : 0;
***************
*** 705,709 ****
  /* Insert the character C at the current location, moving point forward.
     If C introduces a multibyte sequence, we read the whole sequence and
!    then insert the multibyte char into the line buffer. */
  int
  _rl_insert_char (int count, int c)
--- 706,714 ----
  /* Insert the character C at the current location, moving point forward.
     If C introduces a multibyte sequence, we read the whole sequence and
!    then insert the multibyte char into the line buffer.
!    If C == 0, we immediately insert any pending partial multibyte character,
!    assuming that we have read a character that doesn't map to self-insert.
!    This doesn't completely handle characters that are part of a multibyte
!    character but map to editing functions. */
  int
  _rl_insert_char (int count, int c)
***************
*** 719,727 ****
  #endif
  
    if (count <= 0)
      return 0;
  
! #if defined (HANDLE_MULTIBYTE)
!   if (MB_CUR_MAX == 1 || rl_byte_oriented)
      {
        incoming[0] = c;
--- 724,749 ----
  #endif
  
+ #if !defined (HANDLE_MULTIBYTE)
    if (count <= 0)
      return 0;
+ #else
+   if (count < 0)
+     return 0;
+   if (count == 0)
+     {
+       if (pending_bytes_length == 0)
+       return 0;
+       if (stored_count <= 0)
+       stored_count = count;
+       else
+       count = stored_count;
  
!       memcpy (incoming, pending_bytes, pending_bytes_length);
!       incoming[pending_bytes_length] = '\0';
!       incoming_length = pending_bytes_length;
!       pending_bytes_length = 0;
!       memset (&ps, 0, sizeof (mbstate_t));
!     }
!   else if (MB_CUR_MAX == 1 || rl_byte_oriented)
      {
        incoming[0] = c;
***************
*** 731,734 ****
--- 753,759 ----
    else if (_rl_utf8locale && (c & 0x80) == 0)
      {
+       if (pending_bytes_length)
+       _rl_insert_char (0, 0);
+ 
        incoming[0] = c;
        incoming[1] = '\0';
***************
*** 765,769 ****
          incoming_length = 1;
          pending_bytes_length--;
!         memmove (pending_bytes, pending_bytes + 1, pending_bytes_length);
          /* Clear the state of the byte sequence, because in this case the
             effect of mbstate is undefined. */
--- 790,795 ----
          incoming_length = 1;
          pending_bytes_length--;
!         if (pending_bytes_length)
!           memmove (pending_bytes, pending_bytes + 1, pending_bytes_length);
          /* Clear the state of the byte sequence, because in this case the
             effect of mbstate is undefined. */
***************
*** 828,832 ****
--- 854,862 ----
        xfree (string);
  
+ #if defined (HANDLE_MULTIBYTE)
+       return (pending_bytes_length != 0);
+ #else
        return 0;
+ #endif
      }
  
***************
*** 861,864 ****
--- 891,896 ----
        incoming_length = 0;
        stored_count = 0;
+ 
+       return (pending_bytes_length != 0);
  #else /* !HANDLE_MULTIBYTE */
        char str[TEXT_COUNT_MAX+1];
***************
*** 874,880 ****
          count -= decreaser;
        }
- #endif /* !HANDLE_MULTIBYTE */
  
        return 0;
      }
  
--- 906,912 ----
          count -= decreaser;
        }
  
        return 0;
+ #endif /* !HANDLE_MULTIBYTE */
      }
  
***************
*** 904,910 ****
        stored_count = 0;
      }
! #endif
! 
    return 0;
  }
  
--- 936,944 ----
        stored_count = 0;
      }
!   
!   return (pending_bytes_length != 0);
! #else
    return 0;
+ #endif
  }
  
***************
*** 984,987 ****
--- 1018,1026 ----
      }
  
+   /* If we didn't insert n and there are pending bytes, we need to insert
+      them if _rl_insert_char didn't do that on its own. */
+   if (r == 1 && rl_insert_mode == RL_IM_INSERT)
+     r = _rl_insert_char (0, 0);               /* flush partial multibyte char 
*/
+ 
    if (n != (unsigned short)-2)                /* -2 = sentinel value for 
having inserted N */
      {
***************
*** 1055,1058 ****
--- 1094,1099 ----
  rl_quoted_insert (int count, int key)
  {
+   int r;
+ 
    /* Let's see...should the callback interface futz with signal handling? */
  #if defined (HANDLE_SIGNALS)
***************
*** 1073,1085 ****
    if (count < 0)
      {
-       int r;
- 
        do
        r = _rl_insert_next (1);
        while (r == 0 && ++count < 0);
-       return r;
      }
  
!   return _rl_insert_next (count);
  }
  
--- 1114,1128 ----
    if (count < 0)
      {
        do
        r = _rl_insert_next (1);
        while (r == 0 && ++count < 0);
      }
+   else
+     r = _rl_insert_next (count);
  
!   if (r == 1)
!     _rl_insert_char (0, 0);   /* insert partial multibyte character */
! 
!   return r;
  }
  

*** ../readline-8.2/patchlevel  2013-11-15 08:11:11.000000000 -0500
--- patchlevel  2014-03-21 08:28:40.000000000 -0400
***************
*** 1,3 ****
  # Do not edit -- exists only for use by patch
  
! 12
--- 1,3 ----
  # Do not edit -- exists only for use by patch
  
! 13

Reply via email to