]> git.eshelyaron.com Git - emacs.git/commitdiff
Make compare-strings more compatible with old behavior.
authorPaul Eggert <eggert@cs.ucla.edu>
Sat, 2 Aug 2014 15:56:18 +0000 (08:56 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Sat, 2 Aug 2014 15:56:18 +0000 (08:56 -0700)
* fns.c (Fcompare_strings): Silently bring too-large ends into range.

Fixes: debbugs:17903
src/ChangeLog
src/fns.c

index 8ffc1c56675712fa8d0a81672540effb316a44ee..0125f4c93e2e51a38cf7d466877ef6e2c460355c 100644 (file)
@@ -1,3 +1,8 @@
+2014-08-02  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Make compare-strings more compatible with old behavior (Bug#17903).
+       * fns.c (Fcompare_strings): Silently bring too-large ends into range.
+
 2014-08-02  Jan Djärv  <jan.h.d@swipnet.se>
 
        * gtkutil.c (create_dialog): Force min spacing 10 between buttons.
index 79967116a1132fa547ec2fd6f42267f8299bd4ce..33c025983592e694e6ebd91d6093e4b528e8a363 100644 (file)
--- a/src/fns.c
+++ b/src/fns.c
@@ -253,6 +253,13 @@ If string STR1 is greater, the value is a positive number N;
   CHECK_STRING (str1);
   CHECK_STRING (str2);
 
+  /* For backward compatibility, silently bring too-large positive end
+     values into range.  */
+  if (INTEGERP (end1) && SCHARS (str1) < XINT (end1))
+    end1 = make_number (SCHARS (str1));
+  if (INTEGERP (end2) && SCHARS (str2) < XINT (end2))
+    end2 = make_number (SCHARS (str2));
+
   validate_subarray (str1, start1, end1, SCHARS (str1), &from1, &to1);
   validate_subarray (str2, start2, end2, SCHARS (str2), &from2, &to2);
 
@@ -1720,7 +1727,7 @@ See also the function `nreverse', which is used more often.  */)
   else if (VECTORP (seq))
     {
       ptrdiff_t i, size = ASIZE (seq);
-      
+
       new = make_uninit_vector (size);
       for (i = 0; i < size; i++)
        ASET (new, i, AREF (seq, size - i - 1));
@@ -1737,7 +1744,7 @@ See also the function `nreverse', which is used more often.  */)
   else if (STRINGP (seq))
     {
       ptrdiff_t size = SCHARS (seq), bytes = SBYTES (seq);
-      
+
       if (size == bytes)
        {
          ptrdiff_t i;
@@ -1755,7 +1762,7 @@ See also the function `nreverse', which is used more often.  */)
          while (q > SDATA (new))
            {
              int ch, len;
-             
+
              ch = STRING_CHAR_AND_LENGTH (p, len);
              p += len, q -= len;
              CHAR_STRING (ch, q);