This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
In Perl_pv_escape(), avoid reading 1 byte beyond the end of the buffer.
[perl5.git] / utfebcdic.h
index 1c1f200..a9197a9 100644 (file)
@@ -7,7 +7,7 @@
  *    License or the Artistic License, as specified in the README file.
  *
  * Macros to implement UTF-EBCDIC as perl's internal encoding
- * Taken from version 7.1 of Unicode Techical Report #16:
+ * Taken from version 7.1 of Unicode Technical Report #16:
  *  http://www.unicode.org/unicode/reports/tr16
  *
  * To summarize, the way it works is:
@@ -36,7 +36,7 @@
  *     ordinal value of 'A' is 193 in EBCDIC, and also is 193 in UTF-EBCDIC.
  *     Step 1) converts it to 65, Step 2 leaves it at 65, and Step 3 converts
  *     it back to 193.  As an example of how a variant character works, take
- *     LATIN SMALL LETTER Y WITH DIAERESIS, which is typicially 0xDF in
+ *     LATIN SMALL LETTER Y WITH DIAERESIS, which is typically 0xDF in
  *     EBCDIC.  Step 1 converts it to the Unicode value, 0xFF.  Step 2
  *     converts that to two bytes = 11000111 10111111 = C7 BF, and Step 3
  *     converts those to 0x8B 0x73.  The table is constructed so that the
@@ -272,7 +272,7 @@ unsigned char PL_e2utf[] = { /* EBCDIC (IBM-037) to I8 */
 #endif          /* 037 */
 
 /* These tables moved from perl.h and converted to hex.
-   They map platfrom code page from/to bottom 256 codes of Unicode (i.e. iso-8859-1).
+   They map platform code page from/to bottom 256 codes of Unicode (i.e. iso-8859-1).
 */
 
 #if '^' == 95   /* if defined(__MVS__) || defined(??) (VM/ESA?) 1047 */
@@ -298,6 +298,8 @@ EXTCONST unsigned char PL_a2e[] = { /* ASCII (iso-8859-1) to EBCDIC (IBM-1047) *
 #define LATIN_SMALL_LETTER_Y_WITH_DIAERESIS 0xDF
 #define LATIN_SMALL_LETTER_SHARP_S 0x59
 #define MICRO_SIGN 0xA0
+#define LATIN_CAPITAL_LETTER_A_WITH_RING_ABOVE 0x0067
+#define LATIN_SMALL_LETTER_A_WITH_RING_ABOVE 0x0047
 
 EXTCONST unsigned char PL_e2a[] = { /* EBCDIC (IBM-1047) to ASCII (iso-8859-1) */
  0x00, 0x01, 0x02, 0x03, 0x9C, 0x09, 0x86, 0x7F, 0x97, 0x8D, 0x8E, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
@@ -378,6 +380,8 @@ EXTCONST unsigned char PL_a2e[] = { /* ASCII (ISO8859-1) to EBCDIC (POSIX-BC) */
 #define LATIN_SMALL_LETTER_Y_WITH_DIAERESIS 0xDF
 #define LATIN_SMALL_LETTER_SHARP_S 0x59
 #define MICRO_SIGN 0xA0
+#define LATIN_CAPITAL_LETTER_A_WITH_RING_ABOVE 0x0067
+#define LATIN_SMALL_LETTER_A_WITH_RING_ABOVE 0x0047
 
 EXTCONST unsigned char PL_e2a[] = { /* EBCDIC (POSIX-BC) to ASCII (ISO8859-1) */
  0x00, 0x01, 0x02, 0x03, 0x9C, 0x09, 0x86, 0x7F, 0x97, 0x8D, 0x8E, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
@@ -459,6 +463,8 @@ EXTCONST unsigned char PL_a2e[] = { /* ASCII (ISO8859-1) to EBCDIC (IBM-037) */
 #define LATIN_SMALL_LETTER_Y_WITH_DIAERESIS 0xDF
 #define LATIN_SMALL_LETTER_SHARP_S 0x59
 #define MICRO_SIGN 0xA0
+#define LATIN_CAPITAL_LETTER_A_WITH_RING_ABOVE 0x0067
+#define LATIN_SMALL_LETTER_A_WITH_RING_ABOVE 0x0047
 
 EXTCONST unsigned char PL_e2a[] = { /* EBCDIC (IBM-037) to ASCII (ISO8859-1) */
  0x00, 0x01, 0x02, 0x03, 0x9C, 0x09, 0x86, 0x7F, 0x97, 0x8D, 0x8E, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,