Here's a potential patch which solves this issue for me.  It should, in
my estimation, be functionally equivalent.  Though, I'm still curious as
to whether Ulrich gets a clean build without it, and if so, why.

Thoughts?


-- Matthew R. Trower



>From 35f1b6ad5d76effa03793d3e8ff9bbd756c22e46 Mon Sep 17 00:00:00 2001
From: "Matthew R. Trower" <d...@blackshard.net>
Date: Sun, 10 Jun 2018 21:39:42 -0500
Subject: [PATCH] nsgml: Resolve SunStudio symbol collision

---
 cde/programs/nsgmls/Ptr.h | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/cde/programs/nsgmls/Ptr.h b/cde/programs/nsgmls/Ptr.h
index d8f2970a..22e42c1f 100644
--- a/cde/programs/nsgmls/Ptr.h
+++ b/cde/programs/nsgmls/Ptr.h
@@ -68,7 +68,7 @@ public:
   Boolean operator!=(const T *p) const {
     return ptr_ != p;
   }
-private:
+protected:
   T *ptr_;
 };
 
@@ -93,7 +93,13 @@ public:
   const T &operator*() const { return *Ptr<T>::pointer(); }
   void swap(ConstPtr<T> &p) { Ptr<T>::swap(p); }
   using Ptr<T>::isNull;
-  using Ptr<T>::clear;
+  void clear() {
+    if (ptr_) {
+      if (ptr_->unref())
+	delete ptr_;
+      ptr_ = 0;
+    }
+  }
   Boolean operator==(const Ptr<T> &p) const { return Ptr<T>::operator==(p); }
   Boolean operator!=(const Ptr<T> &p) const { return Ptr<T>::operator!=(p); }
   Boolean operator==(const ConstPtr<T> &p) const {
-- 
2.16.2

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
cdesktopenv-devel mailing list
cdesktopenv-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/cdesktopenv-devel

Reply via email to