@@ -1606,24 +1606,25 @@ - (void)setCanvas: (PyObject*)newCanvas
1606
1606
1607
1607
static void _buffer_release (void * info, const void * data, size_t size) {
1608
1608
PyBuffer_Release ((Py_buffer *)info);
1609
+ free (info);
1609
1610
}
1610
1611
1611
1612
static int _copy_agg_buffer (CGContextRef cr, PyObject *renderer)
1612
1613
{
1613
- Py_buffer buffer;
1614
+ Py_buffer * buffer = malloc ( sizeof (Py_buffer)) ;
1614
1615
1615
- if (PyObject_GetBuffer (renderer, & buffer, PyBUF_CONTIG_RO) == -1 ) {
1616
+ if (PyObject_GetBuffer (renderer, buffer, PyBUF_CONTIG_RO) == -1 ) {
1616
1617
PyErr_Print ();
1617
1618
return 1 ;
1618
1619
}
1619
1620
1620
- if (buffer. ndim != 3 || buffer. shape [2 ] != 4 ) {
1621
- PyBuffer_Release (& buffer);
1621
+ if (buffer-> ndim != 3 || buffer-> shape [2 ] != 4 ) {
1622
+ _buffer_release ( buffer, NULL , 0 );
1622
1623
return 1 ;
1623
1624
}
1624
1625
1625
- const Py_ssize_t nrows = buffer. shape [0 ];
1626
- const Py_ssize_t ncols = buffer. shape [1 ];
1626
+ const Py_ssize_t nrows = buffer-> shape [0 ];
1627
+ const Py_ssize_t ncols = buffer-> shape [1 ];
1627
1628
const size_t bytesPerComponent = 1 ;
1628
1629
const size_t bitsPerComponent = 8 * bytesPerComponent;
1629
1630
const size_t nComponents = 4 ; /* red, green, blue, alpha */
@@ -1632,16 +1633,16 @@ static int _copy_agg_buffer(CGContextRef cr, PyObject *renderer)
1632
1633
1633
1634
CGColorSpaceRef colorspace = CGColorSpaceCreateWithName (kCGColorSpaceGenericRGB );
1634
1635
if (!colorspace) {
1635
- PyBuffer_Release (& buffer);
1636
+ _buffer_release ( buffer, NULL , 0 );
1636
1637
return 1 ;
1637
1638
}
1638
1639
1639
- CGDataProviderRef provider = CGDataProviderCreateWithData (& buffer,
1640
- buffer. buf ,
1641
- buffer. len ,
1640
+ CGDataProviderRef provider = CGDataProviderCreateWithData (buffer,
1641
+ buffer-> buf ,
1642
+ buffer-> len ,
1642
1643
_buffer_release);
1643
1644
if (!provider) {
1644
- PyBuffer_Release (& buffer);
1645
+ _buffer_release ( buffer, NULL , 0 );
1645
1646
CGColorSpaceRelease (colorspace);
1646
1647
return 1 ;
1647
1648
}
@@ -1662,7 +1663,6 @@ static int _copy_agg_buffer(CGContextRef cr, PyObject *renderer)
1662
1663
CGDataProviderRelease (provider);
1663
1664
1664
1665
if (!bitmap) {
1665
- PyBuffer_Release (&buffer);
1666
1666
return 1 ;
1667
1667
}
1668
1668
0 commit comments