aboutsummaryrefslogtreecommitdiffstats
path: root/src/fns.c
diff options
context:
space:
mode:
authorVibhav Pant2020-08-21 14:04:35 +0530
committerVibhav Pant2020-08-21 14:04:35 +0530
commitf0f8d7b82492e741950c363a03b886965c91b1b0 (patch)
tree19b716830b1ebabc0d7d75949c4e6800c0f104ad /src/fns.c
parent9e64a087c4d167e7ec1c4e22bea3e6af53b563de (diff)
parentc818c29771d3cb51875643b2f6c894073e429dd2 (diff)
downloademacs-feature/native-comp-macos-fixes.tar.gz
emacs-feature/native-comp-macos-fixes.zip
Merge branch 'feature/native-comp' into feature/native-comp-macos-fixesfeature/native-comp-macos-fixes
Diffstat (limited to 'src/fns.c')
-rw-r--r--src/fns.c30
1 files changed, 16 insertions, 14 deletions
diff --git a/src/fns.c b/src/fns.c
index 91991782124..a3b8d6ef57d 100644
--- a/src/fns.c
+++ b/src/fns.c
@@ -1747,25 +1747,27 @@ changing the value of a sequence `foo'. */)
1747{ 1747{
1748 if (VECTORP (seq)) 1748 if (VECTORP (seq))
1749 { 1749 {
1750 ptrdiff_t i, n; 1750 ptrdiff_t n = 0;
1751 ptrdiff_t size = ASIZE (seq);
1752 USE_SAFE_ALLOCA;
1753 Lisp_Object *kept = SAFE_ALLOCA (size * sizeof *kept);
1751 1754
1752 for (i = n = 0; i < ASIZE (seq); ++i) 1755 for (ptrdiff_t i = 0; i < size; i++)
1753 if (NILP (Fequal (AREF (seq, i), elt)))
1754 ++n;
1755
1756 if (n != ASIZE (seq))
1757 { 1756 {
1758 struct Lisp_Vector *p = allocate_vector (n); 1757 kept[n] = AREF (seq, i);
1758 n += NILP (Fequal (AREF (seq, i), elt));
1759 }
1759 1760
1760 for (i = n = 0; i < ASIZE (seq); ++i) 1761 if (n != size)
1761 if (NILP (Fequal (AREF (seq, i), elt))) 1762 seq = Fvector (n, kept);
1762 p->contents[n++] = AREF (seq, i);
1763 1763
1764 XSETVECTOR (seq, p); 1764 SAFE_FREE ();
1765 }
1766 } 1765 }
1767 else if (STRINGP (seq)) 1766 else if (STRINGP (seq))
1768 { 1767 {
1768 if (!CHARACTERP (elt))
1769 return seq;
1770
1769 ptrdiff_t i, ibyte, nchars, nbytes, cbytes; 1771 ptrdiff_t i, ibyte, nchars, nbytes, cbytes;
1770 int c; 1772 int c;
1771 1773
@@ -1784,7 +1786,7 @@ changing the value of a sequence `foo'. */)
1784 cbytes = 1; 1786 cbytes = 1;
1785 } 1787 }
1786 1788
1787 if (!FIXNUMP (elt) || c != XFIXNUM (elt)) 1789 if (c != XFIXNUM (elt))
1788 { 1790 {
1789 ++nchars; 1791 ++nchars;
1790 nbytes += cbytes; 1792 nbytes += cbytes;
@@ -1814,7 +1816,7 @@ changing the value of a sequence `foo'. */)
1814 cbytes = 1; 1816 cbytes = 1;
1815 } 1817 }
1816 1818
1817 if (!FIXNUMP (elt) || c != XFIXNUM (elt)) 1819 if (c != XFIXNUM (elt))
1818 { 1820 {
1819 unsigned char *from = SDATA (seq) + ibyte; 1821 unsigned char *from = SDATA (seq) + ibyte;
1820 unsigned char *to = SDATA (tem) + nbytes; 1822 unsigned char *to = SDATA (tem) + nbytes;