From cf32537210014b55b69c2ad1f62db91b3a3ff000 Mon Sep 17 00:00:00 2001 From: timor Date: Sat, 9 Sep 2017 20:18:35 +0200 Subject: coin3d: include fix for newer compilers This manifests as a segfault in any applications that use the library. --- pkgs/development/libraries/coin3d/default.nix | 3 +++ .../development/libraries/coin3d/sbhashentry.patch | 25 ++++++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 pkgs/development/libraries/coin3d/sbhashentry.patch diff --git a/pkgs/development/libraries/coin3d/default.nix b/pkgs/development/libraries/coin3d/default.nix index 034d7d658e1..ce78a6fc134 100644 --- a/pkgs/development/libraries/coin3d/default.nix +++ b/pkgs/development/libraries/coin3d/default.nix @@ -16,6 +16,9 @@ stdenv.mkDerivation rec { sha256 = "076dyc52swk8qc7ylps53fg6iqmd52x8s7m18i80x49dd109yw20"; }) ./gcc-4.8.patch # taken from FC-17 source rpm + # see https://bitbucket.org/Coin3D/coin/issues/128/crash-in-cc_memalloc_deallocate + # patch adapted from https://bitbucket.org/Coin3D/coin/pull-requests/75/added-fix-for-issue-128-provided-by-fedora/diff + ./sbhashentry.patch ]; buildInputs = [ mesa ]; diff --git a/pkgs/development/libraries/coin3d/sbhashentry.patch b/pkgs/development/libraries/coin3d/sbhashentry.patch new file mode 100644 index 00000000000..88c9a5f02a2 --- /dev/null +++ b/pkgs/development/libraries/coin3d/sbhashentry.patch @@ -0,0 +1,25 @@ +diff -u --label /tmp/Coin-3.1.3/src/misc/SbHash.h --label \#\ /tmp/Coin-3.1.3/src/misc/SbHash.h /tmp/buffer-content-21756V0 +--- a/src/misc/SbHash.h ++++ b/src/misc/SbHash.h +@@ -88,8 +88,8 @@ + SbHashEntry * entry = static_cast *>( ptr); + cc_memalloc_deallocate(entry->memhandler, ptr); + } +- SbHashEntry(const Key & key, const Type & obj) : key(key), obj(obj) {} +- ++ SbHashEntry(const Key & key, const Type & obj, cc_memalloc *memhandler) ++ : key(key), obj(obj), memhandler(memhandler) {} + Key key; + Type obj; + SbHashEntry * next; +@@ -218,7 +218,7 @@ + /* Key not already in the hash table; insert a new + * entry as the first element in the bucket + */ +- entry = new (this->memhandler) SbHashEntry(key, obj); ++ entry = new (this->memhandler) SbHashEntry(key, obj, this->memhandler); + entry->next = this->buckets[i]; + this->buckets[i] = entry; + + +Diff finished. Sat Sep 9 19:50:32 2017 -- cgit 1.4.1