On Fri, Feb 13, 2004 at 11:17:28AM +0100, Tassilo von Parseval <tassilo.parseval@post.rwth-aachen.de> wrote:
> can break because now an XPVAV and XPVHV are also smaller than an XPVLV
> but don't contain an IV or PV slot. That means there are some new
> special cases that need to be dealt with thusly (see the new dump.c for
> example):
>
> if (SvTYPE(sv) <= SVt_PVLV
> && SvTYPE(sv) != SVt_PVAV
> && SvTYPE(sv) != SVt_PVHV)
> --- sv.h~ 2004-02-13 09:15:10.000000000 +0100
> +++ sv.h 2004-02-13 11:04:55.000000000 +0100
> @@ -53,11 +53,11 @@ typedef enum {
> SVt_PVNV, /* 6 */
> SVt_PVMG, /* 7 */
> SVt_PVBM, /* 8 */
> - SVt_PVLV, /* 9 */
> - SVt_PVAV, /* 10 */
> - SVt_PVHV, /* 11 */
> - SVt_PVCV, /* 12 */
> - SVt_PVGV, /* 13 */
> + SVt_PVAV, /* 9 */
> + SVt_PVHV, /* 10 */
> + SVt_PVCV, /* 11 */
> + SVt_PVGV, /* 12 */
> + SVt_PVLV, /* 13 */
> SVt_PVFM, /* 14 */
> SVt_PVIO /* 15 */
> } svtype;
Not completely sure why you moved SVt_PVLV to be one higher than PVGV
instead of SVt_PVGV to be one lower than SVt_PVLV. (Either is big
bincompat breakage.)
> --- ext/B/B.xs~ 2004-02-13 11:08:43.000000000 +0100
> +++ ext/B/B.xs 2004-02-13 10:20:15.000000000 +0100
> @@ -29,11 +29,11 @@ static char *svclassnames[] = {
> "B::PVNV",
> "B::PVMG",
> "B::BM",
> - "B::PVLV",
> "B::AV",
> "B::HV",
> "B::CV",
> "B::GV",
> + "B::PVLV",
> "B::FM",
> "B::IO",
> };
Also change B.pm (@B::PVLV::ISA should be set to "B::GV", and
the inheritance tree picture under "SV-RELATED CLASSES" needs to be
amended).
Thread Previous
|
Thread Next