From 159ffe3bc335b27bf74ceee25c0d0fae9f13d6da Mon Sep 17 00:00:00 2001 From: wiredfool Date: Mon, 3 Feb 2025 20:34:40 +0000 Subject: [PATCH] Fix mutex for Free-tread pythons --- src/libImaging/Arrow.c | 12 ++++++------ src/libImaging/Storage.c | 6 +++--- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/libImaging/Arrow.c b/src/libImaging/Arrow.c index 29aadb5e1..493c2a87e 100644 --- a/src/libImaging/Arrow.c +++ b/src/libImaging/Arrow.c @@ -165,9 +165,9 @@ export_single_channel_array(Imaging im, struct ArrowArray *array) { length = im->xsize * im->lines_per_block; } - MUTEX_LOCK(im->mutex); + MUTEX_LOCK(&im->mutex); im->refcount++; - MUTEX_UNLOCK(im->mutex); + MUTEX_UNLOCK(&im->mutex); // Initialize primitive fields *array = (struct ArrowArray){// Data description .length = length, @@ -208,9 +208,9 @@ export_fixed_pixel_array(Imaging im, struct ArrowArray *array) { length = im->xsize * im->lines_per_block; } - MUTEX_LOCK(im->mutex); + MUTEX_LOCK(&im->mutex); im->refcount++; - MUTEX_UNLOCK(im->mutex); + MUTEX_UNLOCK(&im->mutex); // Initialize primitive fields // Fixed length arrays are 1 buffer of validity, and the length in pixels. // Data is in a child array. @@ -246,9 +246,9 @@ export_fixed_pixel_array(Imaging im, struct ArrowArray *array) { goto err; } - MUTEX_LOCK(im->mutex); + MUTEX_LOCK(&im->mutex); im->refcount++; - MUTEX_UNLOCK(im->mutex); + MUTEX_UNLOCK(&im->mutex); *array->children[0] = (struct ArrowArray){// Data description .length = length * 4, .offset = 0, diff --git a/src/libImaging/Storage.c b/src/libImaging/Storage.c index 76e5108af..4ee1af436 100644 --- a/src/libImaging/Storage.c +++ b/src/libImaging/Storage.c @@ -299,14 +299,14 @@ ImagingDelete(Imaging im) { return; } - MUTEX_LOCK(im->mutex); + MUTEX_LOCK(&im->mutex); im->refcount--; if (im->refcount > 0) { - MUTEX_UNLOCK(im->mutex); + MUTEX_UNLOCK(&im->mutex); return; } - MUTEX_UNLOCK(im->mutex); + MUTEX_UNLOCK(&im->mutex); if (im->palette) { ImagingPaletteDelete(im->palette);