summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorfvogel <fvogelnew1@free.fr>2024-06-09 12:38:06 (GMT)
committerfvogel <fvogelnew1@free.fr>2024-06-09 12:38:06 (GMT)
commit13ad83e207e848df4017b03f3f51087b16c2b079 (patch)
tree1ccce2eccb2eec1243862ab181a7aa77c0a7e6d6
parentda20d6adfe8b9d1d363dc3db29569367ffce2115 (diff)
parent9b6c43c2c577b2b086822e8c98bb2a2b4c5b852a (diff)
downloadtk-13ad83e207e848df4017b03f3f51087b16c2b079.zip
tk-13ad83e207e848df4017b03f3f51087b16c2b079.tar.gz
tk-13ad83e207e848df4017b03f3f51087b16c2b079.tar.bz2
Fix [a0241c0e25]: photo image copy command can unexpectedly hang for 20+ seconds.
-rw-r--r--generic/tkImgPhoto.c2
-rw-r--r--tests/imgPhoto.test11
2 files changed, 12 insertions, 1 deletions
diff --git a/generic/tkImgPhoto.c b/generic/tkImgPhoto.c
index cadbb2d..e619910 100644
--- a/generic/tkImgPhoto.c
+++ b/generic/tkImgPhoto.c
@@ -577,7 +577,7 @@ ImgPhotoCmd(
return TCL_ERROR;
}
Tk_PhotoGetImage(srcHandle, &block);
- if ((options.fromX2 > block.width) || (options.fromY2 > block.height)
+ if ((options.fromX > block.width) || (options.fromY > block.height)
|| (options.fromX2 > block.width)
|| (options.fromY2 > block.height)) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
diff --git a/tests/imgPhoto.test b/tests/imgPhoto.test
index 1d3b6e5..865e96c 100644
--- a/tests/imgPhoto.test
+++ b/tests/imgPhoto.test
@@ -1054,6 +1054,17 @@ test imgPhoto-12.4 {Tk_ImgPhotoPutZoomedBlock, empty image} -setup {
} -cleanup {
imageCleanup
} -result {0 0}
+test imgPhoto-12.5 {Tk_ImgPhotoPutZoomedBlock, copy from area outside the image, bug [a0241c0e25]} -setup {
+ imageCleanup
+} -body {
+ image create photo photo1 -width 20 -height 20
+ image create photo photo2 -width 9 -height 10
+ # next line used to loop for a very long time; if the bug is present
+ # the CI runner will time out, leading to test suite failure
+ photo2 copy photo1 -to 0 5 3 8 -from 21 0
+} -cleanup {
+ imageCleanup
+} -returnCodes error -result {coordinates for -from option extend outside source image}
test imgPhoto-13.1 {check separation of images in different interpreters} -setup {
imageCleanup