Skip to content

Commit 1a11ba6

Browse files
committed
do not insert null into dict
1 parent 76d36da commit 1a11ba6

File tree

4 files changed

+48
-45
lines changed

4 files changed

+48
-45
lines changed

src/_imaging.c

Lines changed: 40 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -3810,6 +3810,7 @@ static PyTypeObject PixelAccess_Type = {
38103810
static 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,29 +3821,29 @@ _get_stats(PyObject *self, PyObject *args) {
38203821
if (!d) {
38213822
return NULL;
38223823
}
3823-
PyObject *new_count = PyLong_FromLong(arena->stats_new_count);
3824-
PyDict_SetItemString(d, "new_count", new_count);
3825-
Py_XDECREF(new_count);
3824+
v = PyLong_FromLong(arena->stats_new_count);
3825+
PyDict_SetItemString(d, "new_count", v ? v : Py_None);
3826+
Py_XDECREF(v);
38263827

3827-
PyObject *allocated_blocks = PyLong_FromLong(arena->stats_allocated_blocks);
3828-
PyDict_SetItemString(d, "allocated_blocks", allocated_blocks);
3829-
Py_XDECREF(allocated_blocks);
3828+
v = PyLong_FromLong(arena->stats_allocated_blocks);
3829+
PyDict_SetItemString(d, "allocated_blocks", v ? v : Py_None);
3830+
Py_XDECREF(v);
38303831

3831-
PyObject *reused_blocks = PyLong_FromLong(arena->stats_reused_blocks);
3832-
PyDict_SetItemString(d, "reused_blocks", reused_blocks);
3833-
Py_XDECREF(reused_blocks);
3832+
v = PyLong_FromLong(arena->stats_reused_blocks);
3833+
PyDict_SetItemString(d, "reused_blocks", v ? v : Py_None);
3834+
Py_XDECREF(v);
38343835

3835-
PyObject *reallocated_blocks = PyLong_FromLong(arena->stats_reallocated_blocks);
3836-
PyDict_SetItemString(d, "reallocated_blocks", reallocated_blocks);
3837-
Py_XDECREF(reallocated_blocks);
3836+
v = PyLong_FromLong(arena->stats_reallocated_blocks);
3837+
PyDict_SetItemString(d, "reallocated_blocks", v ? v : Py_None);
3838+
Py_XDECREF(v);
38383839

3839-
PyObject *freed_blocks = PyLong_FromLong(arena->stats_freed_blocks);
3840-
PyDict_SetItemString(d, "freed_blocks", freed_blocks);
3841-
Py_XDECREF(freed_blocks);
3840+
v = PyLong_FromLong(arena->stats_freed_blocks);
3841+
PyDict_SetItemString(d, "freed_blocks", v ? v : Py_None);
3842+
Py_XDECREF(v);
38423843

3843-
PyObject *blocks_cached = PyLong_FromLong(arena->blocks_cached);
3844-
PyDict_SetItemString(d, "blocks_cached", blocks_cached);
3845-
Py_XDECREF(blocks_cached);
3844+
v = PyLong_FromLong(arena->blocks_cached);
3845+
PyDict_SetItemString(d, "blocks_cached", v ? v : Py_None);
3846+
Py_XDECREF(v);
38463847
return d;
38473848
}
38483849

@@ -4211,31 +4212,33 @@ setup_module(PyObject *m) {
42114212
#ifdef HAVE_LIBJPEG
42124213
{
42134214
extern const char *ImagingJpegVersion(void);
4214-
PyObject *jpeglib_version = PyUnicode_FromString(ImagingJpegVersion());
4215-
PyDict_SetItemString(d, "jpeglib_version", jpeglib_version);
4216-
Py_XDECREF(jpeglib_version);
4215+
PyObject *v = PyUnicode_FromString(ImagingJpegVersion());
4216+
PyDict_SetItemString(d, "jpeglib_version", v ? v : Py_None);
4217+
Py_XDECREF(v);
42174218
}
42184219
#endif
42194220

42204221
#ifdef HAVE_OPENJPEG
42214222
{
42224223
extern const char *ImagingJpeg2KVersion(void);
4223-
PyObject *jp2klib_version = PyUnicode_FromString(ImagingJpeg2KVersion());
4224-
PyDict_SetItemString(d, "jp2klib_version", jp2klib_version);
4225-
Py_XDECREF(jp2klib_version);
4224+
PyObject *v = PyUnicode_FromString(ImagingJpeg2KVersion());
4225+
PyDict_SetItemString(d, "jp2klib_version", v ? v : Py_None);
4226+
Py_XDECREF(v);
42264227
}
42274228
#endif
42284229

42294230
PyObject *have_libjpegturbo;
42304231
#ifdef LIBJPEG_TURBO_VERSION
42314232
have_libjpegturbo = Py_True;
4233+
{
42324234
#define tostr1(a) #a
42334235
#define tostr(a) tostr1(a)
4234-
PyObject *libjpeg_turbo_version = PyUnicode_FromString(tostr(LIBJPEG_TURBO_VERSION));
4235-
PyDict_SetItemString(d, "libjpeg_turbo_version", libjpeg_turbo_version);
4236-
Py_XDECREF(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);
42374239
#undef tostr
42384240
#undef tostr1
4241+
}
42394242
#else
42404243
have_libjpegturbo = Py_False;
42414244
#endif
@@ -4247,9 +4250,9 @@ setup_module(PyObject *m) {
42474250
have_libimagequant = Py_True;
42484251
{
42494252
extern const char *ImagingImageQuantVersion(void);
4250-
PyObject *imagequant_version = PyUnicode_FromString(ImagingImageQuantVersion());
4251-
PyDict_SetItemString(d, "imagequant_version", imagequant_version);
4252-
Py_XDECREF(imagequant_version);
4253+
PyObject *v = PyUnicode_FromString(ImagingImageQuantVersion());
4254+
PyDict_SetItemString(d, "imagequant_version", v ? v : Py_None);
4255+
Py_XDECREF(v);
42534256
}
42544257
#else
42554258
have_libimagequant = Py_False;
@@ -4266,18 +4269,18 @@ setup_module(PyObject *m) {
42664269
PyModule_AddIntConstant(m, "FIXED", Z_FIXED);
42674270
{
42684271
extern const char *ImagingZipVersion(void);
4269-
PyObject *zlibversion = PyUnicode_FromString(ImagingZipVersion());
4270-
PyDict_SetItemString(d, "zlib_version", zlibversion);
4271-
Py_XDECREF(zlibversion);
4272+
PyObject *v = PyUnicode_FromString(ImagingZipVersion());
4273+
PyDict_SetItemString(d, "zlib_version", v ? v : Py_None);
4274+
Py_XDECREF(v);
42724275
}
42734276
#endif
42744277

42754278
#ifdef HAVE_LIBTIFF
42764279
{
42774280
extern const char *ImagingTiffVersion(void);
4278-
PyObject *libtiff_version = PyUnicode_FromString(ImagingTiffVersion());
4279-
PyDict_SetItemString(d, "libtiff_version", libtiff_version);
4280-
Py_XDECREF(libtiff_version);
4281+
PyObject *v = PyUnicode_FromString(ImagingTiffVersion());
4282+
PyDict_SetItemString(d, "libtiff_version", v ? v : Py_None);
4283+
Py_XDECREF(v);
42814284

42824285
// Test for libtiff 4.0 or later, excluding libtiff 3.9.6 and 3.9.7
42834286
PyObject *support_custom_tags;
@@ -4301,7 +4304,7 @@ setup_module(PyObject *m) {
43014304
PyModule_AddObject(m, "HAVE_XCB", have_xcb);
43024305

43034306
PyObject *pillow_version = PyUnicode_FromString(version);
4304-
PyDict_SetItemString(d, "PILLOW_VERSION", pillow_version);
4307+
PyDict_SetItemString(d, "PILLOW_VERSION", pillow_version ? pillow_version : Py_None);
43054308
Py_XDECREF(pillow_version);
43064309

43074310
return 0;

src/_imagingcms.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1533,7 +1533,7 @@ setup_module(PyObject *m) {
15331533
} else {
15341534
v = PyUnicode_FromFormat("%d.%d", vn / 1000, (vn / 10) % 100);
15351535
}
1536-
PyDict_SetItemString(d, "littlecms_version", v);
1536+
PyDict_SetItemString(d, "littlecms_version", v ? v : Py_None);
15371537
Py_XDECREF(v);
15381538

15391539
return 0;

src/_imagingft.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1130,15 +1130,15 @@ font_getvaraxes(FontObject *self) {
11301130

11311131
list_axis = PyDict_New();
11321132
PyObject *minimum = PyLong_FromLong(axis.minimum / 65536);
1133-
PyDict_SetItemString(list_axis, "minimum", minimum);
1133+
PyDict_SetItemString(list_axis, "minimum", minimum ? minimum : Py_None);
11341134
Py_XDECREF(minimum);
11351135

11361136
PyObject *def = PyLong_FromLong(axis.def / 65536);
1137-
PyDict_SetItemString(list_axis, "default", def);
1137+
PyDict_SetItemString(list_axis, "default", def ? def : Py_None);
11381138
Py_XDECREF(def);
11391139

11401140
PyObject *maximum = PyLong_FromLong(axis.maximum / 65536);
1141-
PyDict_SetItemString(list_axis, "maximum", maximum);
1141+
PyDict_SetItemString(list_axis, "maximum", maximum ? maximum : Py_None);
11421142
Py_XDECREF(maximum);
11431143

11441144
for (j = 0; j < name_count; j++) {
@@ -1149,7 +1149,7 @@ font_getvaraxes(FontObject *self) {
11491149

11501150
if (name.name_id == axis.strid) {
11511151
axis_name = Py_BuildValue("y#", name.string, name.string_len);
1152-
PyDict_SetItemString(list_axis, "name", axis_name);
1152+
PyDict_SetItemString(list_axis, "name", axis_name ? axis_name : Py_None);
11531153
Py_XDECREF(axis_name);
11541154
break;
11551155
}

src/_webp.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -962,9 +962,9 @@ setup_module(PyObject *m) {
962962
addAnimFlagToModule(m);
963963
addTransparencyFlagToModule(m);
964964

965-
PyObject *webpdecoder_version = PyUnicode_FromString(WebPDecoderVersion_str());
966-
PyDict_SetItemString(d, "webpdecoder_version", webpdecoder_version);
967-
Py_XDECREF(webpdecoder_version);
965+
PyObject *v = PyUnicode_FromString(WebPDecoderVersion_str());
966+
PyDict_SetItemString(d, "webpdecoder_version", v ? v : Py_None);
967+
Py_XDECREF(v);
968968

969969
#ifdef HAVE_WEBPANIM
970970
/* Ready object types */

0 commit comments

Comments
 (0)