More cleanup of utfebcdic.h and utf8.h
authorkarl williamson <public@khwilliamson.com>
Mon, 9 Nov 2009 15:42:17 +0000 (08:42 -0700)
committerH.Merijn Brand <h.m.brand@xs4all.nl>
Mon, 9 Nov 2009 15:53:09 +0000 (16:53 +0100)
commitd06134e53994ea13d6ce081c8d670ed0bd7802ee
treec0640b099c10dfbd06f82619e147d4c0d9ce3b8b
parent56542e71a2958bc71cecc65855e02256aa6006fd
More cleanup of utfebcdic.h and utf8.h

Attached is a patch that removes from utfebcdic.h most definitions that
are common to it and utf8.h, and moves them to the common area of
utf8.h.  The duplicate ones that are retained are each an integral part
of a larger related set that do differ between the headers.

Some of the definitions had started to drift, so this brings them back
into line, with a lowered possibility of future drift.  In particular
the ones for the 'lazy' macros did not do quite as intended, especially
in the EBCDIC case.  The bugs were a small performance hit only, in that
the macro was not quite as lazy as expected, and so loaded utf8_heavy.pl
possibly unnecessarily.  In examining these, I noted that the utf8.h
definition of the start byte of a utf8 encoded string accepts invalid
start bytes 0xC0 and 0xC1.  These are invalid because they are for
overlong encodings of ASCII code points.  One is not supposed to allow
these, and there have been security attacks, according to Wikipedia,
against code that does.  But I don't know all the ramifications for Perl
of changing to exclude these, so I left it alone, but added a comment
(and an item on my personal todo list to check into it).

I made some comment clarifications, and removed some definitions marked
as obsolete in utf8.h that are in fact no longer used.

I added some synonyms for existing macros that more clearly reflect the
use that I intend to put them to in future patches.

From ba581aa4db767e5531ec0c0efdea5de4e9b09921 Mon Sep 17 00:00:00 2001
From: Karl Williamson <khw@khw-desktop.(none)>
Date: Mon, 9 Nov 2009 08:38:24 -0700
Subject: [PATCH] Clean up utf headers

Signed-off-by: H.Merijn Brand <h.m.brand@xs4all.nl>
utf8.h
utfebcdic.h