diff --git a/racket/src/native-libs/build.rkt b/racket/src/native-libs/build.rkt index 506ea17b63..7a71fd8c7f 100644 --- a/racket/src/native-libs/build.rkt +++ b/racket/src/native-libs/build.rkt @@ -116,6 +116,9 @@ ;; Avoid CGFontGetGlyphPath: (define-runtime-path cairo-cgfontgetglpyh-patch "patches/cgfontgetglyph.patch") +;; Patch to avoid writing to a global constant: +(define-runtime-path cairo-allclipmodifybug-patch "patches/allclipmodifybug.patch") + ;; Hack to workaround broken Courier New in Mac OS X 10.{7.8}: (define-runtime-path courier-new-patch "patches/courier-new.patch") @@ -419,6 +422,7 @@ null) #:patches (list cairo-coretext-patch cairo-cgfontgetglpyh-patch + cairo-allclipmodifybug-patch courier-new-patch win32cairofallback-patch))] [("harfbuzz") (config #:depends '("fontconfig" "freetype" "cairo") diff --git a/racket/src/native-libs/patches/allclipmodifybug.patch b/racket/src/native-libs/patches/allclipmodifybug.patch new file mode 100644 index 0000000000..3824c8fef3 --- /dev/null +++ b/racket/src/native-libs/patches/allclipmodifybug.patch @@ -0,0 +1,17 @@ +diff -u -r old/cairo-1.12.16/src/cairo-clip-boxes.c new/cairo-1.12.16/src/cairo-clip-boxes.c +--- old/cairo-1.12.16/src/cairo-clip-boxes.c 2015-11-06 15:46:30.000000000 -0700 ++++ new/cairo-1.12.16/src/cairo-clip-boxes.c 2015-11-06 15:47:36.000000000 -0700 +@@ -172,8 +172,11 @@ + if (clip->path == NULL) { + clip->extents = *r; + } else { +- if (! _cairo_rectangle_intersect (&clip->extents, r)) ++ if (! _cairo_rectangle_intersect (&clip->extents, r)) { + clip = _cairo_clip_set_all_clipped (clip); ++ /* return so that there's no attempt to modify `clip`: */ ++ return clip; ++ } + } + if (clip->path == NULL) + clip->is_region = _cairo_box_is_pixel_aligned (box); +Only in new/cairo-1.12.16/src: cairo-clip-boxes.c~