summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTomas Farago <sensej007@email.cz>2021-11-10 10:51:12 +0100
committerTomas Farago <sensej007@email.cz>2021-11-10 10:51:12 +0100
commitb3dddf257c7d987b0f6834508a0e16240ad139dd (patch)
treed3301f1d0495f2ad0c59f6e108c42cd76b27ec0e
parent09edcabf491d5b44087f5f6add5c7109184a0216 (diff)
downloadufo-filters-b3dddf257c7d987b0f6834508a0e16240ad139dd.tar.gz
ufo-filters-b3dddf257c7d987b0f6834508a0e16240ad139dd.tar.bz2
ufo-filters-b3dddf257c7d987b0f6834508a0e16240ad139dd.tar.xz
ufo-filters-b3dddf257c7d987b0f6834508a0e16240ad139dd.zip
reader: handle large y-step and small height
extreme cases like y-step=20 and height=1 resulted in a segfault.
-rw-r--r--src/readers/ufo-tiff-reader.c3
-rw-r--r--src/ufo-read-task.c5
2 files changed, 5 insertions, 3 deletions
diff --git a/src/readers/ufo-tiff-reader.c b/src/readers/ufo-tiff-reader.c
index caad515..0bac745 100644
--- a/src/readers/ufo-tiff-reader.c
+++ b/src/readers/ufo-tiff-reader.c
@@ -117,7 +117,8 @@ read_data (UfoTiffReaderPrivate *priv,
gchar *src;
gsize plane_size;
- plane_size = step * roi_height / roi_step;
+ /* Allow things like roi_height=1 and roi_step=20 */
+ plane_size = step * ((roi_height - 1) / roi_step + 1);
src = g_new0 (gchar, step * 3);
for (guint i = roi_y; i < roi_y + roi_height; i += roi_step) {
diff --git a/src/ufo-read-task.c b/src/ufo-read-task.c
index 17290ae..1587031 100644
--- a/src/ufo-read-task.c
+++ b/src/ufo-read-task.c
@@ -346,8 +346,9 @@ ufo_read_task_get_requisition (UfoTask *task,
}
}
- /* update height for reduced vertical ROI */
- requisition->dims[1] = priv->roi_height / priv->roi_step;
+ /* update height for reduced vertical ROI and allow things like roi_height=1
+ * and roi_step=20 */
+ requisition->dims[1] = (priv->roi_height - 1) / priv->roi_step + 1;
}
static guint