@@ -1585,24 +1585,25 @@ - (void)setCanvas: (PyObject*)newCanvas
1585
1585
1586
1586
static void _buffer_release (void * info, const void * data, size_t size) {
1587
1587
PyBuffer_Release ((Py_buffer *)info);
1588
+ free (info);
1588
1589
}
1589
1590
1590
1591
static int _copy_agg_buffer (CGContextRef cr, PyObject *renderer)
1591
1592
{
1592
- Py_buffer buffer;
1593
+ Py_buffer * buffer = malloc ( sizeof (Py_buffer)) ;
1593
1594
1594
- if (PyObject_GetBuffer (renderer, & buffer, PyBUF_CONTIG_RO) == -1 ) {
1595
+ if (PyObject_GetBuffer (renderer, buffer, PyBUF_CONTIG_RO) == -1 ) {
1595
1596
PyErr_Print ();
1596
1597
return 1 ;
1597
1598
}
1598
1599
1599
- if (buffer. ndim != 3 || buffer. shape [2 ] != 4 ) {
1600
- PyBuffer_Release (& buffer);
1600
+ if (buffer-> ndim != 3 || buffer-> shape [2 ] != 4 ) {
1601
+ _buffer_release ( buffer, NULL , 0 );
1601
1602
return 1 ;
1602
1603
}
1603
1604
1604
- const Py_ssize_t nrows = buffer. shape [0 ];
1605
- const Py_ssize_t ncols = buffer. shape [1 ];
1605
+ const Py_ssize_t nrows = buffer-> shape [0 ];
1606
+ const Py_ssize_t ncols = buffer-> shape [1 ];
1606
1607
const size_t bytesPerComponent = 1 ;
1607
1608
const size_t bitsPerComponent = 8 * bytesPerComponent;
1608
1609
const size_t nComponents = 4 ; /* red, green, blue, alpha */
@@ -1611,16 +1612,16 @@ static int _copy_agg_buffer(CGContextRef cr, PyObject *renderer)
1611
1612
1612
1613
CGColorSpaceRef colorspace = CGColorSpaceCreateWithName (kCGColorSpaceGenericRGB );
1613
1614
if (!colorspace) {
1614
- PyBuffer_Release (& buffer);
1615
+ _buffer_release ( buffer, NULL , 0 );
1615
1616
return 1 ;
1616
1617
}
1617
1618
1618
- CGDataProviderRef provider = CGDataProviderCreateWithData (& buffer,
1619
- buffer. buf ,
1620
- buffer. len ,
1619
+ CGDataProviderRef provider = CGDataProviderCreateWithData (buffer,
1620
+ buffer-> buf ,
1621
+ buffer-> len ,
1621
1622
_buffer_release);
1622
1623
if (!provider) {
1623
- PyBuffer_Release (& buffer);
1624
+ _buffer_release ( buffer, NULL , 0 );
1624
1625
CGColorSpaceRelease (colorspace);
1625
1626
return 1 ;
1626
1627
}
@@ -1641,7 +1642,6 @@ static int _copy_agg_buffer(CGContextRef cr, PyObject *renderer)
1641
1642
CGDataProviderRelease (provider);
1642
1643
1643
1644
if (!bitmap) {
1644
- PyBuffer_Release (&buffer);
1645
1645
return 1 ;
1646
1646
}
1647
1647
0 commit comments