]> git.eshelyaron.com Git - emacs.git/commitdiff
STRING_CHAR does not unify characters; update documentation
authorMichal Nazarewicz <mina86@mina86.com>
Tue, 6 Sep 2016 15:20:23 +0000 (17:20 +0200)
committerMichal Nazarewicz <mina86@mina86.com>
Fri, 9 Sep 2016 01:07:15 +0000 (03:07 +0200)
* src/character.h (STRING_CHAR): Update doc.
* src/buffer.h (FETCH_MULTIBYTE_CHAR): Update doc.  While at it, change
the function to use BYTE_POS_ADDR instead of open-coding it.

src/buffer.h
src/character.h

index 87b7cee4413276b73de7d3ea8b04083c51ff8edf..fa4866e8f721dc282eaf0adf8c6796d98b0be4a9 100644 (file)
@@ -1182,23 +1182,12 @@ buffer_has_overlays (void)
 
 /* Return character code of multi-byte form at byte position POS.  If POS
    doesn't point the head of valid multi-byte form, only the byte at
-   POS is returned.  No range checking.
-
-   WARNING: The character returned by this macro could be "unified"
-   inside STRING_CHAR, if the original character in the buffer belongs
-   to one of the Private Use Areas (PUAs) of codepoints that Emacs
-   uses to support non-unified CJK characters.  If that happens,
-   CHAR_BYTES will return a value that is different from the length of
-   the original multibyte sequence stored in the buffer.  Therefore,
-   do _not_ use FETCH_MULTIBYTE_CHAR if you need to advance through
-   the buffer to the next character after fetching this one.  Instead,
-   use either FETCH_CHAR_ADVANCE or STRING_CHAR_AND_LENGTH.  */
+   POS is returned.  No range checking. */
 
 INLINE int
 FETCH_MULTIBYTE_CHAR (ptrdiff_t pos)
 {
-  unsigned char *p = ((pos >= GPT_BYTE ? GAP_SIZE : 0)
-                     + pos + BEG_ADDR - BEG_BYTE);
+  unsigned char *p = BYTE_POS_ADDR (pos);
   return STRING_CHAR (p);
 }
 
index 0d0e31c4c92f1ad4d35c70d03a49ff041503e9bd..7f01bc6a31e6740b0f97e34e2cc3e82b6a5ad4ee 100644 (file)
@@ -308,10 +308,7 @@ enum
       }                                                                        \
   } while (false)
 
-/* Return the character code of character whose multibyte form is at
-   P.  Note that this macro unifies CJK characters whose codepoints
-   are in the Private Use Areas (PUAs), so it might return a different
-   codepoint from the one actually stored at P.  */
+/* Return the character code of character whose multibyte form is at P. */
 
 #define STRING_CHAR(p)                                         \
   (!((p)[0] & 0x80)                                            \