@@ -3810,6 +3810,7 @@ static PyTypeObject PixelAccess_Type = {
38103810static PyObject *
38113811_get_stats (PyObject * self , PyObject * args ) {
38123812 PyObject * d ;
3813+ PyObject * v ;
38133814 ImagingMemoryArena arena = & ImagingDefaultArena ;
38143815
38153816 if (!PyArg_ParseTuple (args , ":get_stats" )) {
@@ -3820,15 +3821,29 @@ _get_stats(PyObject *self, PyObject *args) {
38203821 if (!d ) {
38213822 return NULL ;
38223823 }
3823- PyDict_SetItemString (d , "new_count" , PyLong_FromLong (arena -> stats_new_count ));
3824- PyDict_SetItemString (
3825- d , "allocated_blocks" , PyLong_FromLong (arena -> stats_allocated_blocks ));
3826- PyDict_SetItemString (
3827- d , "reused_blocks" , PyLong_FromLong (arena -> stats_reused_blocks ));
3828- PyDict_SetItemString (
3829- d , "reallocated_blocks" , PyLong_FromLong (arena -> stats_reallocated_blocks ));
3830- PyDict_SetItemString (d , "freed_blocks" , PyLong_FromLong (arena -> stats_freed_blocks ));
3831- PyDict_SetItemString (d , "blocks_cached" , PyLong_FromLong (arena -> blocks_cached ));
3824+ v = PyLong_FromLong (arena -> stats_new_count );
3825+ PyDict_SetItemString (d , "new_count" , v ? v : Py_None );
3826+ Py_XDECREF (v );
3827+
3828+ v = PyLong_FromLong (arena -> stats_allocated_blocks );
3829+ PyDict_SetItemString (d , "allocated_blocks" , v ? v : Py_None );
3830+ Py_XDECREF (v );
3831+
3832+ v = PyLong_FromLong (arena -> stats_reused_blocks );
3833+ PyDict_SetItemString (d , "reused_blocks" , v ? v : Py_None );
3834+ Py_XDECREF (v );
3835+
3836+ v = PyLong_FromLong (arena -> stats_reallocated_blocks );
3837+ PyDict_SetItemString (d , "reallocated_blocks" , v ? v : Py_None );
3838+ Py_XDECREF (v );
3839+
3840+ v = PyLong_FromLong (arena -> stats_freed_blocks );
3841+ PyDict_SetItemString (d , "freed_blocks" , v ? v : Py_None );
3842+ Py_XDECREF (v );
3843+
3844+ v = PyLong_FromLong (arena -> blocks_cached );
3845+ PyDict_SetItemString (d , "blocks_cached" , v ? v : Py_None );
3846+ Py_XDECREF (v );
38323847 return d ;
38333848}
38343849
@@ -4197,28 +4212,33 @@ setup_module(PyObject *m) {
41974212#ifdef HAVE_LIBJPEG
41984213 {
41994214 extern const char * ImagingJpegVersion (void );
4200- PyDict_SetItemString (
4201- d , "jpeglib_version" , PyUnicode_FromString (ImagingJpegVersion ()));
4215+ PyObject * v = PyUnicode_FromString (ImagingJpegVersion ());
4216+ PyDict_SetItemString (d , "jpeglib_version" , v ? v : Py_None );
4217+ Py_XDECREF (v );
42024218 }
42034219#endif
42044220
42054221#ifdef HAVE_OPENJPEG
42064222 {
42074223 extern const char * ImagingJpeg2KVersion (void );
4208- PyDict_SetItemString (
4209- d , "jp2klib_version" , PyUnicode_FromString (ImagingJpeg2KVersion ()));
4224+ PyObject * v = PyUnicode_FromString (ImagingJpeg2KVersion ());
4225+ PyDict_SetItemString (d , "jp2klib_version" , v ? v : Py_None );
4226+ Py_XDECREF (v );
42104227 }
42114228#endif
42124229
42134230 PyObject * have_libjpegturbo ;
42144231#ifdef LIBJPEG_TURBO_VERSION
42154232 have_libjpegturbo = Py_True ;
4233+ {
42164234#define tostr1 (a ) #a
42174235#define tostr (a ) tostr1(a)
4218- PyDict_SetItemString (
4219- d , "libjpeg_turbo_version" , PyUnicode_FromString (tostr (LIBJPEG_TURBO_VERSION )));
4236+ PyObject * v = PyUnicode_FromString (tostr (LIBJPEG_TURBO_VERSION ));
4237+ PyDict_SetItemString (d , "libjpeg_turbo_version" , v ? v : Py_None );
4238+ Py_XDECREF (v );
42204239#undef tostr
42214240#undef tostr1
4241+ }
42224242#else
42234243 have_libjpegturbo = Py_False ;
42244244#endif
@@ -4230,8 +4250,9 @@ setup_module(PyObject *m) {
42304250 have_libimagequant = Py_True ;
42314251 {
42324252 extern const char * ImagingImageQuantVersion (void );
4233- PyDict_SetItemString (
4234- d , "imagequant_version" , PyUnicode_FromString (ImagingImageQuantVersion ()));
4253+ PyObject * v = PyUnicode_FromString (ImagingImageQuantVersion ());
4254+ PyDict_SetItemString (d , "imagequant_version" , v ? v : Py_None );
4255+ Py_XDECREF (v );
42354256 }
42364257#else
42374258 have_libimagequant = Py_False ;
@@ -4248,16 +4269,18 @@ setup_module(PyObject *m) {
42484269 PyModule_AddIntConstant (m , "FIXED" , Z_FIXED );
42494270 {
42504271 extern const char * ImagingZipVersion (void );
4251- PyDict_SetItemString (
4252- d , "zlib_version" , PyUnicode_FromString (ImagingZipVersion ()));
4272+ PyObject * v = PyUnicode_FromString (ImagingZipVersion ());
4273+ PyDict_SetItemString (d , "zlib_version" , v ? v : Py_None );
4274+ Py_XDECREF (v );
42534275 }
42544276#endif
42554277
42564278#ifdef HAVE_LIBTIFF
42574279 {
42584280 extern const char * ImagingTiffVersion (void );
4259- PyDict_SetItemString (
4260- d , "libtiff_version" , PyUnicode_FromString (ImagingTiffVersion ()));
4281+ PyObject * v = PyUnicode_FromString (ImagingTiffVersion ());
4282+ PyDict_SetItemString (d , "libtiff_version" , v ? v : Py_None );
4283+ Py_XDECREF (v );
42614284
42624285 // Test for libtiff 4.0 or later, excluding libtiff 3.9.6 and 3.9.7
42634286 PyObject * support_custom_tags ;
@@ -4280,7 +4303,9 @@ setup_module(PyObject *m) {
42804303 Py_INCREF (have_xcb );
42814304 PyModule_AddObject (m , "HAVE_XCB" , have_xcb );
42824305
4283- PyDict_SetItemString (d , "PILLOW_VERSION" , PyUnicode_FromString (version ));
4306+ PyObject * pillow_version = PyUnicode_FromString (version );
4307+ PyDict_SetItemString (d , "PILLOW_VERSION" , pillow_version ? pillow_version : Py_None );
4308+ Py_XDECREF (pillow_version );
42844309
42854310 return 0 ;
42864311}
0 commit comments