From c263b05cca879ab1bdca5823df0413604d39d4c6 Mon Sep 17 00:00:00 2001 From: Mark Wooding Date: Sun, 20 Oct 2019 21:18:08 +0100 Subject: [PATCH] pyke/pyke.[ch]: Make type skeleton structures be read-only. We couldn't do this before because `INITTYPE_META' would write the direct superclass to the `tp_base' slot in the skeleton before calling `inittype'. To make this work, then, we adjust `inittype' to take the direct superclass as an extra argument and plug it into the newly created heap-type; and `INITTYPE_META' needs adjusting to pass this argument rather than trying to write to the skeleton directly. Of course, then we need to actually mark the type skeletons as `const'. --- algorithms.c | 56 ++++++++++++++++++++++++++++---------------------------- buffer.c | 4 ++-- bytestring.c | 2 +- catacomb.c | 2 +- ec.c | 16 ++++++++-------- field.c | 14 +++++++------- group.c | 16 ++++++++-------- key.c | 26 +++++++++++++------------- mp.c | 34 +++++++++++++++++++++++----------- passphrase.c | 2 +- pgen.c | 14 +++++++------- pubkey.c | 12 ++++++------ pyke/mapping.c | 4 ++-- pyke/pyke.c | 5 +++-- pyke/pyke.h | 9 ++++----- rand.c | 26 +++++++++++++------------- share.c | 12 ++++++------ 17 files changed, 133 insertions(+), 121 deletions(-) diff --git a/algorithms.c b/algorithms.c index 858597a..0ff2bf0 100644 --- a/algorithms.c +++ b/algorithms.c @@ -295,7 +295,7 @@ static const PyMemberDef keyszset_pymembers[] = { { 0 } }; -static PyTypeObject keysz_pytype_skel = { +static const PyTypeObject keysz_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "KeySZ", /* @tp_name@ */ sizeof(keysz_pyobj), /* @tp_basicsize@ */ @@ -343,7 +343,7 @@ static PyTypeObject keysz_pytype_skel = { 0 /* @tp_is_gc@ */ }; -static PyTypeObject keyszany_pytype_skel = { +static const PyTypeObject keyszany_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "KeySZAny", /* @tp_name@ */ sizeof(keysz_pyobj), /* @tp_basicsize@ */ @@ -392,7 +392,7 @@ static PyTypeObject keyszany_pytype_skel = { 0 /* @tp_is_gc@ */ }; -static PyTypeObject keyszrange_pytype_skel = { +static const PyTypeObject keyszrange_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "KeySZRange", /* @tp_name@ */ sizeof(keyszrange_pyobj), /* @tp_basicsize@ */ @@ -442,7 +442,7 @@ static PyTypeObject keyszrange_pytype_skel = { 0 /* @tp_is_gc@ */ }; -static PyTypeObject keyszset_pytype_skel = { +static const PyTypeObject keyszset_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "KeySZSet", /* @tp_name@ */ sizeof(keyszset_pyobj), /* @tp_basicsize@ */ @@ -669,7 +669,7 @@ static const PyMethodDef gcipher_pymethods[] = { { 0 } }; -static PyTypeObject gccipher_pytype_skel = { +static const PyTypeObject gccipher_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "GCCipher", /* @tp_name@ */ sizeof(gccipher_pyobj), /* @tp_basicsize@ */ @@ -717,7 +717,7 @@ static PyTypeObject gccipher_pytype_skel = { 0 /* @tp_is_gc@ */ }; -static PyTypeObject gcipher_pytype_skel = { +static const PyTypeObject gcipher_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "GCipher", /* @tp_name@ */ sizeof(gcipher_pyobj), /* @tp_basicsize@ */ @@ -1552,7 +1552,7 @@ static const PyMethodDef gaeaddec_pymethods[] = { { 0 } }; -static PyTypeObject gcaead_pytype_skel = { +static const PyTypeObject gcaead_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "GCAEAD", /* @tp_name@ */ sizeof(gcaead_pyobj), /* @tp_basicsize@ */ @@ -1600,7 +1600,7 @@ static PyTypeObject gcaead_pytype_skel = { 0 /* @tp_is_gc@ */ }; -static PyTypeObject gaeadkey_pytype_skel = { +static const PyTypeObject gaeadkey_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "GAEKey", /* @tp_name@ */ sizeof(gaeadkey_pyobj), /* @tp_basicsize@ */ @@ -1648,7 +1648,7 @@ static PyTypeObject gaeadkey_pytype_skel = { 0 /* @tp_is_gc@ */ }; -static PyTypeObject gcaeadaad_pytype_skel = { +static const PyTypeObject gcaeadaad_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "GAEAADClass", /* @tp_name@ */ sizeof(gcaeadaad_pyobj), /* @tp_basicsize@ */ @@ -1696,7 +1696,7 @@ static PyTypeObject gcaeadaad_pytype_skel = { 0 /* @tp_is_gc@ */ }; -static PyTypeObject gaeadaad_pytype_skel = { +static const PyTypeObject gaeadaad_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "GAEAAD", /* @tp_name@ */ sizeof(gaeadaad_pyobj), /* @tp_basicsize@ */ @@ -1744,7 +1744,7 @@ static PyTypeObject gaeadaad_pytype_skel = { 0 /* @tp_is_gc@ */ }; -static PyTypeObject gcaeadenc_pytype_skel = { +static const PyTypeObject gcaeadenc_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "GAEEncClass", /* @tp_name@ */ sizeof(gcaeadenc_pyobj), /* @tp_basicsize@ */ @@ -1792,7 +1792,7 @@ static PyTypeObject gcaeadenc_pytype_skel = { 0 /* @tp_is_gc@ */ }; -static PyTypeObject gaeadenc_pytype_skel = { +static const PyTypeObject gaeadenc_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "GAEEnc", /* @tp_name@ */ sizeof(gaeadenc_pyobj), /* @tp_basicsize@ */ @@ -1840,7 +1840,7 @@ static PyTypeObject gaeadenc_pytype_skel = { 0 /* @tp_is_gc@ */ }; -static PyTypeObject gcaeaddec_pytype_skel = { +static const PyTypeObject gcaeaddec_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "GAEDecClass", /* @tp_name@ */ sizeof(gcaeaddec_pyobj), /* @tp_basicsize@ */ @@ -1888,7 +1888,7 @@ static PyTypeObject gcaeaddec_pytype_skel = { 0 /* @tp_is_gc@ */ }; -static PyTypeObject gaeaddec_pytype_skel = { +static const PyTypeObject gaeaddec_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "GAEDec", /* @tp_name@ */ sizeof(gaeaddec_pyobj), /* @tp_basicsize@ */ @@ -2086,7 +2086,7 @@ static const PyMethodDef ghash_pymethods[] = { { 0 } }; -static PyTypeObject gchash_pytype_skel = { +static const PyTypeObject gchash_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "GCHash", /* @tp_name@ */ sizeof(gchash_pyobj), /* @tp_basicsize@ */ @@ -2134,7 +2134,7 @@ static PyTypeObject gchash_pytype_skel = { 0 /* @tp_is_gc@ */ }; -static PyTypeObject ghash_pytype_skel = { +static const PyTypeObject ghash_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "GHash", /* @tp_name@ */ sizeof(ghash_pyobj), /* @tp_basicsize@ */ @@ -2300,7 +2300,7 @@ static const PyGetSetDef gcmac_pygetset[] = { { 0 } }; -static PyTypeObject gcmac_pytype_skel = { +static const PyTypeObject gcmac_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "GCMAC", /* @tp_name@ */ sizeof(gchash_pyobj), /* @tp_basicsize@ */ @@ -2348,7 +2348,7 @@ static PyTypeObject gcmac_pytype_skel = { 0 /* @tp_is_gc@ */ }; -static PyTypeObject gmac_pytype_skel = { +static const PyTypeObject gmac_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "GMAC", /* @tp_name@ */ sizeof(gmac_pyobj), /* @tp_basicsize@ */ @@ -2396,7 +2396,7 @@ static PyTypeObject gmac_pytype_skel = { 0 /* @tp_is_gc@ */ }; -static PyTypeObject gmhash_pytype_skel = { +static const PyTypeObject gmhash_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "GMACHash", /* @tp_name@ */ sizeof(ghash_pyobj), /* @tp_basicsize@ */ @@ -2646,7 +2646,7 @@ static const PyMethodDef poly1305hash_pymethods[] = { { 0 } }; -static PyTypeObject poly1305cls_pytype_skel = { +static const PyTypeObject poly1305cls_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "Poly1305Class", /* @tp_name@ */ sizeof(PyHeapTypeObject), /* @tp_basicsize@ */ @@ -2694,7 +2694,7 @@ static PyTypeObject poly1305cls_pytype_skel = { 0 /* @tp_is_gc@ */ }; -static PyTypeObject poly1305key_pytype_skel = { +static const PyTypeObject poly1305key_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "poly1305", /* @tp_name@ */ sizeof(poly1305key_pyobj), /* @tp_basicsize@ */ @@ -2742,7 +2742,7 @@ static PyTypeObject poly1305key_pytype_skel = { 0 /* @tp_is_gc@ */ }; -static PyTypeObject poly1305hash_pytype_skel = { +static const PyTypeObject poly1305hash_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "Poly1305Hash", /* @tp_name@ */ sizeof(poly1305hash_pyobj), /* @tp_basicsize@ */ @@ -2922,7 +2922,7 @@ static const PyMethodDef kxvik_pymethods[] = { { 0 } }; -static PyTypeObject kxvik_pytype_skel = { +static const PyTypeObject kxvik_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "Keccak1600", /* @tp_name@ */ sizeof(kxvik_pyobj), /* @tp_basicsize@ */ @@ -3167,7 +3167,7 @@ static const PyMethodDef shake_pymethods[] = { { 0 } }; -static PyTypeObject shake_pytype_skel = { +static const PyTypeObject shake_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "Shake", /* @tp_name@ */ sizeof(shake_pyobj), /* @tp_basicsize@ */ @@ -3215,7 +3215,7 @@ static PyTypeObject shake_pytype_skel = { 0 /* @tp_is_gc@ */ }; -static PyTypeObject shake128_pytype_skel = { +static const PyTypeObject shake128_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "Shake128", /* @tp_name@ */ 0, /* @tp_basicsize@ */ @@ -3263,7 +3263,7 @@ static PyTypeObject shake128_pytype_skel = { 0 /* @tp_is_gc@ */ }; -static PyTypeObject shake256_pytype_skel = { +static const PyTypeObject shake256_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "Shake256", /* @tp_name@ */ 0, /* @tp_basicsize@ */ @@ -3460,7 +3460,7 @@ static const PyMethodDef gprp_pymethods[] = { { 0 } }; -static PyTypeObject gcprp_pytype_skel = { +static const PyTypeObject gcprp_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "GCPRP", /* @tp_name@ */ sizeof(gcprp_pyobj), /* @tp_basicsize@ */ @@ -3508,7 +3508,7 @@ static PyTypeObject gcprp_pytype_skel = { 0 /* @tp_is_gc@ */ }; -static PyTypeObject gprp_pytype_skel = { +static const PyTypeObject gprp_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "GPRP", /* @tp_name@ */ sizeof(gprp_pyobj), /* @tp_basicsize@ */ diff --git a/buffer.c b/buffer.c index 690c7cd..6f6d422 100644 --- a/buffer.c +++ b/buffer.c @@ -280,7 +280,7 @@ static const PyBufferProcs rbuf_pybuffer = { 0 /* @bf_getcharbuffer@ */ }; -static PyTypeObject rbuf_pytype_skel = { +static const PyTypeObject rbuf_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "ReadBuffer", /* @tp_name@ */ sizeof(buf_pyobj), /* @tp_basicsize@ */ @@ -520,7 +520,7 @@ static const PyBufferProcs wbuf_pybuffer = { 0 /* @bf_getcharbuffer@ */ }; -static PyTypeObject wbuf_pytype_skel = { +static const PyTypeObject wbuf_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "WriteBuffer", /* @tp_name@ */ sizeof(buf_pyobj), /* @tp_basicsize@ */ diff --git a/bytestring.c b/bytestring.c index 95da629..3bf1b25 100644 --- a/bytestring.c +++ b/bytestring.c @@ -317,7 +317,7 @@ static const PyMappingMethods bytestring_pymapping = { 0, /* @mp_ass_subscript@ */ }; -static PyTypeObject bytestring_pytype_skel = { +static const PyTypeObject bytestring_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "ByteString", /* @tp_name@ */ 0, /* @tp_basicsize@ */ diff --git a/catacomb.c b/catacomb.c index d98d6ab..62889c2 100644 --- a/catacomb.c +++ b/catacomb.c @@ -162,7 +162,7 @@ static PyObject *meth__ego(PyObject *me, PyObject *arg) RETURN_NONE; } -static PyMethodDef methods[] = { +static const PyMethodDef methods[] = { #define METHNAME(func) meth_##func METH (_ego, "_ego(ARGV0)") #undef METHNAME diff --git a/ec.c b/ec.c index 06ed424..26cadb6 100644 --- a/ec.c +++ b/ec.c @@ -684,7 +684,7 @@ static const PyNumberMethods ecpt_pynumber = { 0, /* @nb_inplace_true_divide@ */ }; -static PyTypeObject ecpt_pytype_skel = { +static const PyTypeObject ecpt_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "ECPt", /* @tp_name@ */ sizeof(ecpt_pyobj), /* @tp_basicsize@ */ @@ -810,7 +810,7 @@ static const PyNumberMethods ecptcurve_pynumber = { 0, /* @nb_inplace_true_divide@ */ }; -static PyTypeObject ecptcurve_pytype_skel = { +static const PyTypeObject ecptcurve_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "ECPtCurve", /* @tp_name@ */ sizeof(ecpt_pyobj), /* @tp_basicsize@ */ @@ -1069,7 +1069,7 @@ static const PyMethodDef eccurve_pymethods[] = { { 0 } }; -static PyTypeObject eccurve_pytype_skel = { +static const PyTypeObject eccurve_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "ECCurve", /* @tp_name@ */ sizeof(eccurve_pyobj), /* @tp_basicsize@ */ @@ -1123,7 +1123,7 @@ static PyObject *ecprimecurve_pynew(PyTypeObject *ty, return (eccurve_pynew(ty, ec_prime, arg, kw)); } -static PyTypeObject ecprimecurve_pytype_skel = { +static const PyTypeObject ecprimecurve_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "ECPrimeCurve", /* @tp_name@ */ sizeof(eccurve_pyobj), /* @tp_basicsize@ */ @@ -1178,7 +1178,7 @@ static PyObject *ecprimeprojcurve_pynew(PyTypeObject *ty, return (eccurve_pynew(ty, ec_primeproj, arg, kw)); } -static PyTypeObject ecprimeprojcurve_pytype_skel = { +static const PyTypeObject ecprimeprojcurve_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "ECPrimeProjCurve", /* @tp_name@ */ sizeof(eccurve_pyobj), /* @tp_basicsize@ */ @@ -1233,7 +1233,7 @@ static PyObject *ecbincurve_pynew(PyTypeObject *ty, return (eccurve_pynew(ty, ec_bin, arg, kw)); } -static PyTypeObject ecbincurve_pytype_skel = { +static const PyTypeObject ecbincurve_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "ECBinCurve", /* @tp_name@ */ sizeof(eccurve_pyobj), /* @tp_basicsize@ */ @@ -1288,7 +1288,7 @@ static PyObject *ecbinprojcurve_pynew(PyTypeObject *ty, return (eccurve_pynew(ty, ec_binproj, arg, kw)); } -static PyTypeObject ecbinprojcurve_pytype_skel = { +static const PyTypeObject ecbinprojcurve_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "ECBinProjCurve", /* @tp_name@ */ sizeof(eccurve_pyobj), /* @tp_basicsize@ */ @@ -1493,7 +1493,7 @@ static const PyMethodDef ecinfo_pymethods[] = { { 0 } }; -static PyTypeObject ecinfo_pytype_skel = { +static const PyTypeObject ecinfo_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "ECInfo", /* @tp_name@ */ sizeof(ecinfo_pyobj), /* @tp_basicsize@ */ diff --git a/field.c b/field.c index 1ff5ed2..9da6063 100644 --- a/field.c +++ b/field.c @@ -393,7 +393,7 @@ static const PyNumberMethods fe_pynumber = { 0, /* @nb_inplace_true_divide@ */ }; -static PyTypeObject fe_pytype_skel = { +static const PyTypeObject fe_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "FE", /* @tp_name@ */ sizeof(fe_pyobj), /* @tp_basicsize@ */ @@ -539,7 +539,7 @@ static const PyMethodDef field_pymethods[] = { { 0 } }; -static PyTypeObject field_pytype_skel = { +static const PyTypeObject field_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "Field", /* @tp_name@ */ sizeof(field_pyobj), /* @tp_basicsize@ */ @@ -617,7 +617,7 @@ static const PyGetSetDef primefield_pygetset[] = { #undef GETSETNAME }; -static PyTypeObject primefield_pytype_skel = { +static const PyTypeObject primefield_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "PrimeField", /* @tp_name@ */ sizeof(field_pyobj), /* @tp_basicsize@ */ @@ -684,7 +684,7 @@ end: return (0); } -static PyTypeObject niceprimefield_pytype_skel = { +static const PyTypeObject niceprimefield_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "NicePrimeField", /* @tp_name@ */ sizeof(field_pyobj), /* @tp_basicsize@ */ @@ -748,7 +748,7 @@ static const PyGetSetDef binfield_pygetset[] = { { 0 } }; -static PyTypeObject binfield_pytype_skel = { +static const PyTypeObject binfield_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "BinField", /* @tp_name@ */ sizeof(field_pyobj), /* @tp_basicsize@ */ @@ -814,7 +814,7 @@ end: return (0); } -static PyTypeObject binpolyfield_pytype_skel = { +static const PyTypeObject binpolyfield_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "BinPolyField", /* @tp_name@ */ sizeof(field_pyobj), /* @tp_basicsize@ */ @@ -893,7 +893,7 @@ static const PyGetSetDef binnormfield_pygetset[] = { { 0 } }; -static PyTypeObject binnormfield_pytype_skel = { +static const PyTypeObject binnormfield_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "BinNormField", /* @tp_name@ */ sizeof(field_pyobj), /* @tp_basicsize@ */ diff --git a/group.c b/group.c index 62e67b3..d02f356 100644 --- a/group.c +++ b/group.c @@ -345,7 +345,7 @@ static const PyMethodDef bindhinfo_pymethods[] = { { 0 } }; -static PyTypeObject fginfo_pytype_skel = { +static const PyTypeObject fginfo_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "FGInfo", /* @tp_name@ */ sizeof(fginfo_pyobj), /* @tp_basicsize@ */ @@ -393,7 +393,7 @@ static PyTypeObject fginfo_pytype_skel = { 0 /* @tp_is_gc@ */ }; -static PyTypeObject dhinfo_pytype_skel = { +static const PyTypeObject dhinfo_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "DHInfo", /* @tp_name@ */ sizeof(fginfo_pyobj), /* @tp_basicsize@ */ @@ -441,7 +441,7 @@ static PyTypeObject dhinfo_pytype_skel = { 0 /* @tp_is_gc@ */ }; -static PyTypeObject bindhinfo_pytype_skel = { +static const PyTypeObject bindhinfo_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "BinDHInfo", /* @tp_name@ */ sizeof(fginfo_pyobj), /* @tp_basicsize@ */ @@ -1049,7 +1049,7 @@ static const PyNumberMethods ge_pynumber = { 0, /* @nb_inplace_true_divide@ */ }; -static PyTypeObject ge_pytype_skel = { +static const PyTypeObject ge_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "GE", /* @tp_name@ */ sizeof(ge_pyobj), /* @tp_basicsize@ */ @@ -1119,7 +1119,7 @@ static const PyMethodDef group_pymethods[] = { { 0 } }; -static PyTypeObject group_pytype_skel = { +static const PyTypeObject group_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "Group", /* @tp_name@ */ sizeof(group_pyobj), /* @tp_basicsize@ */ @@ -1196,7 +1196,7 @@ static PyObject *primegroup_pynew(PyTypeObject *ty, return (group_dopywrap(ty, group_prime(FGINFO_DP(i)))); } -static PyTypeObject primegroup_pytype_skel = { +static const PyTypeObject primegroup_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "PrimeGroup", /* @tp_name@ */ sizeof(group_pyobj), /* @tp_basicsize@ */ @@ -1273,7 +1273,7 @@ static PyObject *bingroup_pynew(PyTypeObject *ty, return (group_dopywrap(ty, group_binary(FGINFO_DP(i)))); } -static PyTypeObject bingroup_pytype_skel = { +static const PyTypeObject bingroup_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "BinGroup", /* @tp_name@ */ sizeof(group_pyobj), /* @tp_basicsize@ */ @@ -1351,7 +1351,7 @@ static PyObject *ecgroup_pynew(PyTypeObject *ty, return (group_dopywrap(ty, group_ec(&ei))); } -static PyTypeObject ecgroup_pytype_skel = { +static const PyTypeObject ecgroup_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "ECGroup", /* @tp_name@ */ sizeof(group_pyobj), /* @tp_basicsize@ */ diff --git a/key.c b/key.c index a4caa50..919b8f9 100644 --- a/key.c +++ b/key.c @@ -475,7 +475,7 @@ static const PyGetSetDef keydata_pygetset[] = { { 0 } }; -static PyTypeObject keydata_pytype_skel = { +static const PyTypeObject keydata_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "KeyData", /* @tp_name@ */ sizeof(keydata_pyobj), /* @tp_basicsize@ */ @@ -552,7 +552,7 @@ static const PyGetSetDef keydatabin_pygetset[] = { { 0 } }; -static PyTypeObject keydatabin_pytype_skel = { +static const PyTypeObject keydatabin_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "KeyDataBinary", /* @tp_name@ */ sizeof(keydata_pyobj), /* @tp_basicsize@ */ @@ -689,7 +689,7 @@ static const PyGetSetDef keydataenc_pygetset[] = { { 0 } }; -static PyTypeObject keydataenc_pytype_skel = { +static const PyTypeObject keydataenc_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "KeyDataEncrypted", /* @tp_name@ */ sizeof(keydata_pyobj), /* @tp_basicsize@ */ @@ -765,7 +765,7 @@ static const PyGetSetDef keydatamp_pygetset[] = { { 0 } }; -static PyTypeObject keydatamp_pytype_skel = { +static const PyTypeObject keydatamp_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "KeyDataMP", /* @tp_name@ */ sizeof(keydata_pyobj), /* @tp_basicsize@ */ @@ -840,7 +840,7 @@ static const PyGetSetDef keydatastr_pygetset[] = { { 0 } }; -static PyTypeObject keydatastr_pytype_skel = { +static const PyTypeObject keydatastr_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "KeyDataString", /* @tp_name@ */ sizeof(keydata_pyobj), /* @tp_basicsize@ */ @@ -920,7 +920,7 @@ static const PyGetSetDef keydataec_pygetset[] = { { 0 } }; -static PyTypeObject keydataec_pytype_skel = { +static const PyTypeObject keydataec_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "KeyDataECPt", /* @tp_name@ */ sizeof(keydata_pyobj), /* @tp_basicsize@ */ @@ -991,7 +991,7 @@ static void subkeyiter_pydealloc(PyObject *me) FREEOBJ(me); } -static PyTypeObject subkeyiter_pytype_skel = { +static const PyTypeObject subkeyiter_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "SubKeyIter", /* @tp_name@ */ sizeof(subkeyiter_pyobj), /* @tp_basicsize@ */ @@ -1126,7 +1126,7 @@ static const PyMappingMethods keydatastruct_pymapping = { keydatastruct_pystore /* @mp_ass_subscript@ */ }; -static PyTypeObject keydatastruct_pytype_skel = { +static const PyTypeObject keydatastruct_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "KeyDataStructured", /* @tp_name@ */ sizeof(keydata_pyobj), /* @tp_basicsize@ */ @@ -1202,7 +1202,7 @@ static void keyattriter_pydealloc(PyObject *me) FREEOBJ(me); } -static PyTypeObject keyattriter_pytype_skel = { +static const PyTypeObject keyattriter_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "KeyAttributeIter", /* @tp_name@ */ sizeof(keyattriter_pyobj), /* @tp_basicsize@ */ @@ -1312,7 +1312,7 @@ static const PyMappingMethods keyattrs_pymapping = { keyattrs_pystore /* @mp_ass_subscript@ */ }; -static PyTypeObject keyattrs_pytype_skel = { +static const PyTypeObject keyattrs_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "KeyAttributes", /* @tp_name@ */ sizeof(keyattrs_pyobj), /* @tp_basicsize@ */ @@ -1615,7 +1615,7 @@ static const PyGetSetDef key_pygetset[] = { { 0 } }; -static PyTypeObject key_pytype_skel = { +static const PyTypeObject key_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "Key", /* @tp_name@ */ sizeof(key_pyobj), /* @tp_basicsize@ */ @@ -1689,7 +1689,7 @@ static void keyiter_pydealloc(PyObject *me) FREEOBJ(me); } -static PyTypeObject keyiter_pytype_skel = { +static const PyTypeObject keyiter_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "KeyFileIter", /* @tp_name@ */ sizeof(keyiter_pyobj), /* @tp_basicsize@ */ @@ -2009,7 +2009,7 @@ static const PyMappingMethods keyfile_pymapping = { 0 }; -static PyTypeObject keyfile_pytype_skel = { +static const PyTypeObject keyfile_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "KeyFile", /* @tp_name@ */ sizeof(keyfile_pyobj), /* @tp_basicsize@ */ diff --git a/mp.c b/mp.c index 2fc82b2..fbafcee 100644 --- a/mp.c +++ b/mp.c @@ -931,7 +931,7 @@ static const PyNumberMethods mp_pynumber = { 0, /* @nb_inplace_true_divide@ */ }; -static PyTypeObject mp_pytype_skel = { +static const PyTypeObject mp_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "MP", /* @tp_name@ */ sizeof(mp_pyobj), /* @tp_basicsize@ */ @@ -995,6 +995,8 @@ static PyTypeObject mp_pytype_skel = { /*----- Products of small integers ----------------------------------------*/ +static PyTypeObject *mpmul_pytype; + typedef struct mpmul_pyobj { PyObject_HEAD int livep; @@ -1088,7 +1090,7 @@ static const PyMethodDef mpmul_pymethods[] = { { 0 } }; -static PyTypeObject *mpmul_pytype, mpmul_pytype_skel = { +static const PyTypeObject mpmul_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "MPMul", /* @tp_name@ */ sizeof(mpmul_pyobj), /* @tp_basicsize@ */ @@ -1138,6 +1140,8 @@ static PyTypeObject *mpmul_pytype, mpmul_pytype_skel = { /*----- Montgomery reduction ----------------------------------------------*/ +static PyTypeObject *mpmont_pytype; + typedef struct mpmont_pyobj { PyObject_HEAD mpmont mm; @@ -1355,7 +1359,7 @@ static const PyMethodDef mpmont_pymethods[] = { { 0 } }; -static PyTypeObject *mpmont_pytype, mpmont_pytype_skel = { +static const PyTypeObject mpmont_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "MPMont", /* @tp_name@ */ sizeof(mpmont_pyobj), /* @tp_basicsize@ */ @@ -1405,6 +1409,8 @@ static PyTypeObject *mpmont_pytype, mpmont_pytype_skel = { /*----- Barrett reduction -------------------------------------------------*/ +static PyTypeObject *mpbarrett_pytype; + typedef struct mpbarrett_pyobj { PyObject_HEAD mpbarrett mb; @@ -1494,7 +1500,7 @@ static const PyMethodDef mpbarrett_pymethods[] = { { 0 } }; -static PyTypeObject *mpbarrett_pytype, mpbarrett_pytype_skel = { +static const PyTypeObject mpbarrett_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "MPBarrett", /* @tp_name@ */ sizeof(mpbarrett_pyobj), /* @tp_basicsize@ */ @@ -1544,6 +1550,8 @@ static PyTypeObject *mpbarrett_pytype, mpbarrett_pytype_skel = { /*----- Nice prime reduction ----------------------------------------------*/ +static PyTypeObject *mpreduce_pytype; + typedef struct mpreduce_pyobj { PyObject_HEAD mpreduce mr; @@ -1622,7 +1630,7 @@ static const const PyMethodDef mpreduce_pymethods[] = { { 0 } }; -static PyTypeObject *mpreduce_pytype, mpreduce_pytype_skel = { +static const PyTypeObject mpreduce_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "MPReduce", /* @tp_name@ */ sizeof(mpreduce_pyobj), /* @tp_basicsize@ */ @@ -1672,6 +1680,8 @@ static PyTypeObject *mpreduce_pytype, mpreduce_pytype_skel = { /*----- Chinese Remainder Theorem solution --------------------------------*/ +static PyTypeObject *mpcrt_pytype; + typedef struct mpcrt_pyobj { PyObject_HEAD mpcrt c; @@ -1804,7 +1814,7 @@ static const PyMethodDef mpcrt_pymethods[] = { { 0 } }; -static PyTypeObject *mpcrt_pytype, mpcrt_pytype_skel = { +static const PyTypeObject mpcrt_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "MPCRT", /* @tp_name@ */ sizeof(mpcrt_pyobj), /* @tp_basicsize@ */ @@ -2104,7 +2114,7 @@ static const PyNumberMethods gf_pynumber = { 0, /* @nb_inplace_true_divide@ */ }; -static PyTypeObject gf_pytype_skel = { +static const PyTypeObject gf_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "GF", /* @tp_name@ */ sizeof(mp_pyobj), /* @tp_basicsize@ */ @@ -2169,6 +2179,8 @@ static PyTypeObject gf_pytype_skel = { /*----- Sparse poly reduction ---------------------------------------------*/ +static PyTypeObject *gfreduce_pytype; + typedef struct gfreduce_pyobj { PyObject_HEAD gfreduce mr; @@ -2303,7 +2315,7 @@ static const PyMethodDef gfreduce_pymethods[] = { { 0 } }; -static PyTypeObject *gfreduce_pytype, gfreduce_pytype_skel = { +static const PyTypeObject gfreduce_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "GFReduce", /* @tp_name@ */ sizeof(gfreduce_pyobj), /* @tp_basicsize@ */ @@ -2353,14 +2365,14 @@ static PyTypeObject *gfreduce_pytype, gfreduce_pytype_skel = { /*----- Normal/poly transformation ----------------------------------------*/ +static PyTypeObject *gfn_pytype; + typedef struct gfn_pyobj { PyObject_HEAD mp *p; gfn ntop, pton; } gfn_pyobj; -static PyTypeObject *gfn_pytype, gfn_pytype_skel; - #define GFN_P(o) (((gfn_pyobj *)(o))->p) #define GFN_PTON(o) (&((gfn_pyobj *)(o))->pton) #define GFN_NTOP(o) (&((gfn_pyobj *)(o))->ntop) @@ -2441,7 +2453,7 @@ static const PyMethodDef gfn_pymethods[] = { { 0 } }; -static PyTypeObject gfn_pytype_skel = { +static const PyTypeObject gfn_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "GFN", /* @tp_name@ */ sizeof(gfn_pyobj), /* @tp_basicsize@ */ diff --git a/passphrase.c b/passphrase.c index d7baf74..25d448b 100644 --- a/passphrase.c +++ b/passphrase.c @@ -127,7 +127,7 @@ static const PyMethodDef pixie_pymethods[] = { { 0 } }; -static PyTypeObject pixie_pytype_skel = { +static const PyTypeObject pixie_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "Pixie", /* @tp_name@ */ sizeof(pixie_pyobj), /* @tp_basicsize@ */ diff --git a/pgen.c b/pgen.c index 6e9584c..6bbfd82 100644 --- a/pgen.c +++ b/pgen.c @@ -195,7 +195,7 @@ static const PyNumberMethods pfilt_pynumber = { 0, /* @nb_inplace_true_divide@ */ }; -static PyTypeObject pfilt_pytype_skel = { +static const PyTypeObject pfilt_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "PrimeFilter", /* @tp_name@ */ sizeof(pfilt_pyobj), /* @tp_basicsize@ */ @@ -329,7 +329,7 @@ static const PyMethodDef rabin_pymethods[] = { { 0 } }; -static PyTypeObject rabin_pytype_skel = { +static const PyTypeObject rabin_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "RabinMiller", /* @tp_name@ */ sizeof(rabin_pyobj), /* @tp_basicsize@ */ @@ -466,7 +466,7 @@ static const PyGetSetDef pgevent_pygetset[] = { { 0 } }; -static PyTypeObject pgevent_pytype_skel = { +static const PyTypeObject pgevent_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "PrimeGenEvent", /* @tp_name@ */ sizeof(pgevent_pyobj), /* @tp_basicsize@ */ @@ -645,7 +645,7 @@ static const PyMethodDef pgev_pymethods[] = { { 0 } }; -static PyTypeObject pgev_pytype_skel = { +static const PyTypeObject pgev_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "PrimeGenBuiltinHandler", /* @tp_name@ */ sizeof(pgev_pyobj), /* @tp_basicsize@ */ @@ -719,7 +719,7 @@ static const PyGetSetDef pgstep_pygetset[] = { { 0 } }; -static PyTypeObject pgstep_pytype_skel = { +static const PyTypeObject pgstep_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "PrimeGenStepper", /* @tp_name@ */ sizeof(pgstep_pyobj), /* @tp_basicsize@ */ @@ -801,7 +801,7 @@ static const PyGetSetDef pgjump_pygetset[] = { { 0 } }; -static PyTypeObject pgjump_pytype_skel = { +static const PyTypeObject pgjump_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "PrimeGenJumper", /* @tp_name@ */ sizeof(pgjump_pyobj), /* @tp_basicsize@ */ @@ -863,7 +863,7 @@ end: return ((PyObject *)rc); } -static PyTypeObject pgtest_pytype_skel = { +static const PyTypeObject pgtest_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "PrimeGenTester", /* @tp_name@ */ sizeof(pgtest_pyobj), /* @tp_basicsize@ */ diff --git a/pubkey.c b/pubkey.c index d7201c6..05fc397 100644 --- a/pubkey.c +++ b/pubkey.c @@ -218,7 +218,7 @@ static const PyMemberDef dsapriv_pymembers[] = { { 0 } }; -static PyTypeObject dsapub_pytype_skel = { +static const PyTypeObject dsapub_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "DSAPub", /* @tp_name@ */ sizeof(dsa_pyobj), /* @tp_basicsize@ */ @@ -266,7 +266,7 @@ static PyTypeObject dsapub_pytype_skel = { 0 /* @tp_is_gc@ */ }; -static PyTypeObject dsapriv_pytype_skel = { +static const PyTypeObject dsapriv_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "DSAPriv", /* @tp_name@ */ sizeof(dsa_pyobj), /* @tp_basicsize@ */ @@ -436,7 +436,7 @@ static const PyMethodDef kcdsapriv_pymethods[] = { { 0 } }; -static PyTypeObject kcdsapub_pytype_skel = { +static const PyTypeObject kcdsapub_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "KCDSAPub", /* @tp_name@ */ sizeof(dsa_pyobj), /* @tp_basicsize@ */ @@ -484,7 +484,7 @@ static PyTypeObject kcdsapub_pytype_skel = { 0 /* @tp_is_gc@ */ }; -static PyTypeObject kcdsapriv_pytype_skel = { +static const PyTypeObject kcdsapriv_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "KCDSAPriv", /* @tp_name@ */ sizeof(dsa_pyobj), /* @tp_basicsize@ */ @@ -787,7 +787,7 @@ static const PyMethodDef rsapriv_pymethods[] = { { 0 } }; -static PyTypeObject rsapub_pytype_skel = { +static const PyTypeObject rsapub_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "RSAPub", /* @tp_name@ */ sizeof(rsapub_pyobj), /* @tp_basicsize@ */ @@ -835,7 +835,7 @@ static PyTypeObject rsapub_pytype_skel = { 0 /* @tp_is_gc@ */ }; -static PyTypeObject rsapriv_pytype_skel = { +static const PyTypeObject rsapriv_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "RSAPriv", /* @tp_name@ */ sizeof(rsapriv_pyobj), /* @tp_basicsize@ */ diff --git a/pyke/mapping.c b/pyke/mapping.c index 7080ca5..e97fcb0 100644 --- a/pyke/mapping.c +++ b/pyke/mapping.c @@ -54,7 +54,7 @@ static PyObject *itemiter_pynext(PyObject *me) return (rc); } -static PyTypeObject itemiter_pytype_skel = { +static const PyTypeObject itemiter_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "ItemIter", /* @tp_name@ */ sizeof(iter_pyobj), /* @tp_basicsize@ */ @@ -112,7 +112,7 @@ static PyObject *valiter_pynext(PyObject *me) return (rc); } -static PyTypeObject valiter_pytype_skel = { +static const PyTypeObject valiter_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "ValueIter", /* @tp_name@ */ sizeof(iter_pyobj), /* @tp_basicsize@ */ diff --git a/pyke/pyke.c b/pyke/pyke.c index b462a1f..f19c9e4 100644 --- a/pyke/pyke.c +++ b/pyke/pyke.c @@ -218,7 +218,6 @@ void *newtype(PyTypeObject *metaty, (PyHeapTypeObject *)_PyObject_GC_Malloc(_PyObject_VAR_SIZE(metaty, 0)); if (!skel) skel = &emptytype; memcpy(ty, skel, sizeof(*skel)); - if (ty->ht_type.tp_base) Py_INCREF(ty->ht_type.tp_base); #define COPY(blah) do { \ if (ty->ht_type.tp_as_##blah) { \ memcpy(&ty->as_##blah, \ @@ -249,9 +248,11 @@ void typeready(PyTypeObject *ty) PyDict_SetItemString(ty->tp_dict, "__module__", modname); } -PyTypeObject *inittype(PyTypeObject *tyskel, PyTypeObject *meta) +PyTypeObject *inittype(const PyTypeObject *tyskel, + PyTypeObject *base, PyTypeObject *meta) { PyTypeObject *ty = newtype(meta, tyskel, 0); + if (base) { ty->tp_base = base; Py_INCREF(base); } ty->tp_flags |= Py_TPFLAGS_HEAPTYPE; typeready(ty); return (ty); diff --git a/pyke/pyke.h b/pyke/pyke.h index 3076bb5..138a9fb 100644 --- a/pyke/pyke.h +++ b/pyke/pyke.h @@ -208,11 +208,11 @@ extern void *newtype(PyTypeObject */*meta*/, extern void typeready(PyTypeObject *); /* The type object is now ready to be used. */ -extern PyTypeObject *inittype(PyTypeObject */*skel*/, +extern PyTypeObject *inittype(const PyTypeObject */*skel*/, + PyTypeObject */*base*/, PyTypeObject */*meta*/); /* All-in-one function to construct a working type from a type skeleton - * SKEL, with metaclass META. The caller is expected to have filled in the - * direct superclass in SKEL->tp_base. + * SKEL, with known base type BASE (null for `object') and metaclass. */ /* Alias for built-in types, to fit in with Pyke naming conventions. */ @@ -220,8 +220,7 @@ extern PyTypeObject *inittype(PyTypeObject */*skel*/, #define type_pytype &PyType_Type #define INITTYPE_META(ty, base, meta) do { \ - ty##_pytype_skel.tp_base = base##_pytype; \ - ty##_pytype = inittype(&ty##_pytype_skel, meta##_pytype); \ + ty##_pytype = inittype(&ty##_pytype_skel, base##_pytype, meta##_pytype); \ } while (0) #define INITTYPE(ty, base) INITTYPE_META(ty, base, type) /* Macros to initialize a type from its skeleton. */ diff --git a/rand.c b/rand.c index d2b331f..96a86d5 100644 --- a/rand.c +++ b/rand.c @@ -282,7 +282,7 @@ static const PyMethodDef grand_pymethods[] = { { 0 } }; -static PyTypeObject grand_pytype_skel = { +static const PyTypeObject grand_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "GRand", /* @tp_name@ */ sizeof(grand_pyobj), /* @tp_basicsize@ */ @@ -339,7 +339,7 @@ static PyObject *lcrand_pynew(PyTypeObject *me, PyObject *arg, PyObject *kw) return (grand_dopywrap(lcrand_pytype, lcrand_create(n), f_freeme)); } -static PyTypeObject lcrand_pytype_skel = { +static const PyTypeObject lcrand_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "LCRand", /* @tp_name@ */ sizeof(grand_pyobj), /* @tp_basicsize@ */ @@ -396,7 +396,7 @@ static PyObject *fibrand_pynew(PyTypeObject *me, PyObject *arg, PyObject *kw) return (grand_dopywrap(fibrand_pytype, fibrand_create(n), f_freeme)); } -static PyTypeObject fibrand_pytype_skel = { +static const PyTypeObject fibrand_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "FibRand", /* @tp_name@ */ sizeof(grand_pyobj), /* @tp_basicsize@ */ @@ -526,7 +526,7 @@ static const PyGetSetDef truerand_pygetset[] = { { 0 } }; -static PyTypeObject truerand_pytype_skel = { +static const PyTypeObject truerand_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "TrueRand", /* @tp_name@ */ sizeof(grand_pyobj), /* @tp_basicsize@ */ @@ -774,7 +774,7 @@ static const PyMethodDef gclatinrand_pymethods[] = { { 0 } }; -static PyTypeObject gccrand_pytype_skel = { +static const PyTypeObject gccrand_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "GCCRand", /* @tp_name@ */ sizeof(gccrand_pyobj), /* @tp_basicsize@ */ @@ -822,7 +822,7 @@ static PyTypeObject gccrand_pytype_skel = { 0 /* @tp_is_gc@ */ }; -static PyTypeObject gcrand_pytype_skel = { +static const PyTypeObject gcrand_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "GCRand", /* @tp_name@ */ sizeof(grand_pyobj), /* @tp_basicsize@ */ @@ -870,7 +870,7 @@ static PyTypeObject gcrand_pytype_skel = { 0 /* @tp_is_gc@ */ }; -static PyTypeObject gclatinrand_pytype_skel = { +static const PyTypeObject gclatinrand_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "GCLatinRand", /* @tp_name@ */ sizeof(grand_pyobj), /* @tp_basicsize@ */ @@ -971,7 +971,7 @@ end: return (rc); } -static PyTypeObject sslprf_pytype_skel = { +static const PyTypeObject sslprf_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "SSLRand", /* @tp_name@ */ sizeof(grand_pyobj), /* @tp_basicsize@ */ @@ -1020,7 +1020,7 @@ static PyTypeObject sslprf_pytype_skel = { 0 /* @tp_is_gc@ */ }; -static PyTypeObject tlsdx_pytype_skel = { +static const PyTypeObject tlsdx_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "TLSDataExpansion", /* @tp_name@ */ sizeof(grand_pyobj), /* @tp_basicsize@ */ @@ -1069,7 +1069,7 @@ static PyTypeObject tlsdx_pytype_skel = { 0 /* @tp_is_gc@ */ }; -static PyTypeObject tlsprf_pytype_skel = { +static const PyTypeObject tlsprf_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "TLSPRF", /* @tp_name@ */ sizeof(grand_pyobj), /* @tp_basicsize@ */ @@ -1150,7 +1150,7 @@ static const PyGetSetDef dsarand_pygetset[] = { { 0 } }; -static PyTypeObject dsarand_pytype_skel = { +static const PyTypeObject dsarand_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "DSARand", /* @tp_name@ */ sizeof(grand_pyobj), /* @tp_basicsize@ */ @@ -1276,7 +1276,7 @@ static const PyGetSetDef bbs_pygetset[] = { { 0 } }; -static PyTypeObject bbs_pytype_skel = { +static const PyTypeObject bbs_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "BlumBlumShub", /* @tp_name@ */ sizeof(grand_pyobj), /* @tp_basicsize@ */ @@ -1438,7 +1438,7 @@ static const PyGetSetDef bbspriv_pygetset[] = { { 0 } }; -static PyTypeObject bbspriv_pytype_skel = { +static const PyTypeObject bbspriv_pytype_skel = { PyObject_HEAD_INIT(0) 0, /* Header */ "BBSPriv", /* @tp_name@ */ sizeof(bbspriv_pyobj), /* @tp_basicsize@ */ diff --git a/share.c b/share.c index 5d54947..8c58d23 100644 --- a/share.c +++ b/share.c @@ -61,7 +61,7 @@ static const PyGetSetDef gfshare_pygetset[]= { { 0 } }; -static PyTypeObject gfshare_pytype_skel = { +static const PyTypeObject gfshare_pytype_skel = { PyObject_HEAD_INIT(&PyType_Type) 0, /* Header */ "GFShare", /* @tp_name@ */ sizeof(gfshare_pyobj), /* @tp_basicsize@ */ @@ -149,7 +149,7 @@ static const PyMethodDef gfsharesplit_pymethods[] = { { 0 } }; -static PyTypeObject gfsharesplit_pytype_skel = { +static const PyTypeObject gfsharesplit_pytype_skel = { PyObject_HEAD_INIT(&PyType_Type) 0, /* Header */ "GFShareSplit", /* @tp_name@ */ sizeof(gfshare_pyobj), /* @tp_basicsize@ */ @@ -270,7 +270,7 @@ static const PyGetSetDef gfsharejoin_pygetset[]= { { 0 } }; -static PyTypeObject gfsharejoin_pytype_skel = { +static const PyTypeObject gfsharejoin_pytype_skel = { PyObject_HEAD_INIT(&PyType_Type) 0, /* Header */ "GFShareJoin", /* @tp_name@ */ sizeof(gfshare_pyobj), /* @tp_basicsize@ */ @@ -352,7 +352,7 @@ static const PyGetSetDef share_pygetset[]= { { 0 } }; -static PyTypeObject share_pytype_skel = { +static const PyTypeObject share_pytype_skel = { PyObject_HEAD_INIT(&PyType_Type) 0, /* Header */ "Share", /* @tp_name@ */ sizeof(share_pyobj), /* @tp_basicsize@ */ @@ -445,7 +445,7 @@ static const PyMethodDef sharesplit_pymethods[] = { { 0 } }; -static PyTypeObject sharesplit_pytype_skel = { +static const PyTypeObject sharesplit_pytype_skel = { PyObject_HEAD_INIT(&PyType_Type) 0, /* Header */ "ShareSplit", /* @tp_name@ */ sizeof(share_pyobj), /* @tp_basicsize@ */ @@ -568,7 +568,7 @@ static const PyGetSetDef sharejoin_pygetset[]= { { 0 } }; -static PyTypeObject sharejoin_pytype_skel = { +static const PyTypeObject sharejoin_pytype_skel = { PyObject_HEAD_INIT(&PyType_Type) 0, /* Header */ "ShareJoin", /* @tp_name@ */ sizeof(share_pyobj), /* @tp_basicsize@ */ -- 2.11.0