diff options
| author | Vibhav Pant | 2020-08-21 14:04:35 +0530 |
|---|---|---|
| committer | Vibhav Pant | 2020-08-21 14:04:35 +0530 |
| commit | f0f8d7b82492e741950c363a03b886965c91b1b0 (patch) | |
| tree | 19b716830b1ebabc0d7d75949c4e6800c0f104ad /src/fns.c | |
| parent | 9e64a087c4d167e7ec1c4e22bea3e6af53b563de (diff) | |
| parent | c818c29771d3cb51875643b2f6c894073e429dd2 (diff) | |
| download | emacs-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.c | 30 |
1 files changed, 16 insertions, 14 deletions
| @@ -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; |