summaryrefslogtreecommitdiff
path: root/graphics/inkscape/patches/patch-src_gc.cpp
blob: 71309896a82a77c163c697674b3bdff65cf8540d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
$NetBSD: patch-src_gc.cpp,v 1.1 2014/04/17 06:20:27 wiz Exp $

    Committer: Johan B. C. Engelen
    Date: 2014-01-12 21:00:46 UTC
    Revision ID: j.b.c.engelen@alumnus.utwente.nl-20140112210046-w4k02e3v5wkwg2za

https://launchpad.net/bugs/1265072
fix build with boehm-gc 7.4.0+ (patch by Vladimir Smirnov, slightly modified by me)


--- src/gc.cpp.orig	2012-02-14 03:22:17.000000000 +0000
+++ src/gc.cpp
@@ -70,9 +70,13 @@ void *debug_base(void *ptr) {
     return base + debug_base_fixup();
 }
 
-int debug_general_register_disappearing_link(void **p_ptr, void *base) {
-    char *real_base=reinterpret_cast<char *>(base) - debug_base_fixup();
+int debug_general_register_disappearing_link(void **p_ptr, void const *base) {
+    char const *real_base = reinterpret_cast<char const *>(base) - debug_base_fixup();
+#if (GC_MAJOR_VERSION >= 7 && GC_MINOR_VERSION >= 4)
     return GC_general_register_disappearing_link(p_ptr, real_base);
+#else // compatibility with older Boehm GC versions
+    return GC_general_register_disappearing_link(p_ptr, const_cast<char *>(real_base));
+#endif
 }
 
 void dummy_do_init() {}
@@ -90,7 +94,7 @@ void dummy_register_finalizer(void *, Cl
     }
 }
 
-int dummy_general_register_disappearing_link(void **, void *) { return false; }
+int dummy_general_register_disappearing_link(void **, void const *) { return false; }
 
 int dummy_unregister_disappearing_link(void **/*link*/) { return false; }
 
@@ -112,7 +116,11 @@ Ops enabled_ops = {
     &GC_malloc_atomic_uncollectable,
     &GC_base,
     &GC_register_finalizer_ignore_self,
-    &GC_general_register_disappearing_link,
+#if (GC_MAJOR_VERSION >= 7 && GC_MINOR_VERSION >= 4)
+     &GC_general_register_disappearing_link,
+#else // compatibility with older Boehm GC versions
+    (int (*)(void**, const void*))(&GC_general_register_disappearing_link),
+#endif
     &GC_unregister_disappearing_link,
     &GC_get_heap_size,
     &GC_get_free_bytes,
@@ -202,7 +210,7 @@ void stub_register_finalizer_ignore_self
     die_because_not_initialized();
 }
 
-int stub_general_register_disappearing_link(void **, void *) {
+int stub_general_register_disappearing_link(void **, void const *) {
     die_because_not_initialized();
     return 0;
 }