[pypy-commit] cffi default: Share code
arigo
pypy.commits at gmail.com
Tue Oct 25 17:57:03 EDT 2016
Author: Armin Rigo <arigo at tunes.org>
Branch:
Changeset: r2798:269ab01b4990
Date: 2016-10-25 11:25 +0200
http://bitbucket.org/cffi/cffi/changeset/269ab01b4990/
Log: Share code
diff --git a/c/_cffi_backend.c b/c/_cffi_backend.c
--- a/c/_cffi_backend.c
+++ b/c/_cffi_backend.c
@@ -912,7 +912,7 @@
new_sized_cdata(char *data, CTypeDescrObject *ct, Py_ssize_t length)
{
CDataObject_own_length *scd;
-
+
scd = (CDataObject_own_length *)PyObject_Malloc(
offsetof(CDataObject_own_length, alignment));
if (PyObject_Init((PyObject *)scd, &CData_Type) == NULL)
@@ -2154,7 +2154,6 @@
cdata_slice(CDataObject *cd, PySliceObject *slice)
{
Py_ssize_t bounds[2];
- CDataObject_own_length *scd;
CTypeDescrObject *ct = _cdata_getslicearg(cd, slice, bounds);
if (ct == NULL)
return NULL;
@@ -2166,16 +2165,8 @@
}
ct = (CTypeDescrObject *)ct->ct_stuff;
- scd = (CDataObject_own_length *)PyObject_Malloc(
- offsetof(CDataObject_own_length, alignment));
- if (PyObject_Init((PyObject *)scd, &CData_Type) == NULL)
- return NULL;
- Py_INCREF(ct);
- scd->head.c_type = ct;
- scd->head.c_data = cd->c_data + ct->ct_itemdescr->ct_size * bounds[0];
- scd->head.c_weakreflist = NULL;
- scd->length = bounds[1];
- return (PyObject *)scd;
+ char *cdata = cd->c_data + ct->ct_itemdescr->ct_size * bounds[0];
+ return new_sized_cdata(cdata, ct, bounds[1]);
}
static int
More information about the pypy-commit
mailing list