summaryrefslogtreecommitdiffstats
path: root/generic
diff options
context:
space:
mode:
authornijtmans@users.sourceforge.net <jan.nijtmans>2017-01-03 13:12:14 (GMT)
committernijtmans@users.sourceforge.net <jan.nijtmans>2017-01-03 13:12:14 (GMT)
commit78181fca8b54e268a8a92f2d71a28743820d6681 (patch)
treedf946e262813b4c1c062bc2fe2549c7369c3bd00 /generic
parenta0e908c4b6e1ad032f20de2bcb9c3fbdd64f3363 (diff)
parenta581b1707b5da454813c216fb34b5e0a51526776 (diff)
downloadtk-78181fca8b54e268a8a92f2d71a28743820d6681.zip
tk-78181fca8b54e268a8a92f2d71a28743820d6681.tar.gz
tk-78181fca8b54e268a8a92f2d71a28743820d6681.tar.bz2
Fix [f325020623898d6afe8bb73276459a922003c077|f325020623]: Tk crashes when drawing many dashed objects
Diffstat (limited to 'generic')
-rw-r--r--generic/tkCanvUtil.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/generic/tkCanvUtil.c b/generic/tkCanvUtil.c
index cbbc2b4..09ce98c 100644
--- a/generic/tkCanvUtil.c
+++ b/generic/tkCanvUtil.c
@@ -1136,7 +1136,9 @@ Tk_ConfigOutlineGC(
if (mask && (dash->number != 0)) {
gcValues->line_style = LineOnOffDash;
gcValues->dash_offset = outline->offset;
- if (dash->number > 0) {
+ if ((unsigned int)ABS(dash->number) > sizeof(char *)) {
+ gcValues->dashes = dash->pattern.pt[0];
+ } else if (dash->number != 0) {
gcValues->dashes = dash->pattern.array[0];
} else {
gcValues->dashes = (char) (4 * width + 0.5);
@@ -1340,7 +1342,9 @@ Tk_ResetOutlineGC(
if ((dash->number > 2) || (dash->number < -1) || (dash->number==2 &&
(dash->pattern.array[0] != dash->pattern.array[1])) ||
((dash->number == -1) && (dash->pattern.array[0] != ','))) {
- if (dash->number > 0) {
+ if ((unsigned int)ABS(dash->number) > sizeof(char *)) {
+ dashList = dash->pattern.pt[0];
+ } else if (dash->number != 0) {
dashList = dash->pattern.array[0];
} else {
dashList = (char) (4 * width + 0.5);