Skip to content

Commit 13310dc

Browse files
akxradarhere
andcommitted
geometry: clean up imOut if operation fails
Co-authored-by: Andrew Murray <3112309+radarhere@users.noreply.github.com>
1 parent c8c74c8 commit 13310dc

1 file changed

Lines changed: 34 additions & 24 deletions

File tree

src/_imaging.c

Lines changed: 34 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -2192,30 +2192,40 @@ _transpose(ImagingObject *self, PyObject *args) {
21922192
return NULL;
21932193
}
21942194

2195-
if (imOut) {
2196-
switch (op) {
2197-
case 0:
2198-
(void)ImagingFlipLeftRight(imOut, imIn);
2199-
break;
2200-
case 1:
2201-
(void)ImagingFlipTopBottom(imOut, imIn);
2202-
break;
2203-
case 2:
2204-
(void)ImagingRotate90(imOut, imIn);
2205-
break;
2206-
case 3:
2207-
(void)ImagingRotate180(imOut, imIn);
2208-
break;
2209-
case 4:
2210-
(void)ImagingRotate270(imOut, imIn);
2211-
break;
2212-
case 5:
2213-
(void)ImagingTranspose(imOut, imIn);
2214-
break;
2215-
case 6:
2216-
(void)ImagingTransverse(imOut, imIn);
2217-
break;
2218-
}
2195+
if (!imOut) {
2196+
return NULL;
2197+
}
2198+
2199+
Imaging imTemp = NULL; // will be either NULL or imOut after the operation finishes
2200+
switch (op) {
2201+
case 0:
2202+
imTemp = ImagingFlipLeftRight(imOut, imIn);
2203+
break;
2204+
case 1:
2205+
imTemp = ImagingFlipTopBottom(imOut, imIn);
2206+
break;
2207+
case 2:
2208+
imTemp = ImagingRotate90(imOut, imIn);
2209+
break;
2210+
case 3:
2211+
imTemp = ImagingRotate180(imOut, imIn);
2212+
break;
2213+
case 4:
2214+
imTemp = ImagingRotate270(imOut, imIn);
2215+
break;
2216+
case 5:
2217+
imTemp = ImagingTranspose(imOut, imIn);
2218+
break;
2219+
case 6:
2220+
imTemp = ImagingTransverse(imOut, imIn);
2221+
break;
2222+
default:
2223+
PyErr_SetString(PyExc_ValueError, "No such transpose operation");
2224+
return NULL;
2225+
}
2226+
if (!imTemp) { // operation failed and will have set an exception
2227+
ImagingDelete(imOut);
2228+
return NULL;
22192229
}
22202230

22212231
return PyImagingNew(imOut);

0 commit comments

Comments
 (0)