svn commit: r384241 - head/games/gtkradiant/files

Alexey Dokuchaev danfe at FreeBSD.org
Sat Apr 18 17:10:28 UTC 2015


Author: danfe
Date: Sat Apr 18 17:10:26 2015
New Revision: 384241
URL: https://svnweb.freebsd.org/changeset/ports/384241

Log:
  Oops, incomplete version of the patch was committed in r384239.

Modified:
  head/games/gtkradiant/files/patch-radiant_treemodel.cpp

Modified: head/games/gtkradiant/files/patch-radiant_treemodel.cpp
==============================================================================
--- head/games/gtkradiant/files/patch-radiant_treemodel.cpp	Sat Apr 18 16:39:18 2015	(r384240)
+++ head/games/gtkradiant/files/patch-radiant_treemodel.cpp	Sat Apr 18 17:10:26 2015	(r384241)
@@ -1,37 +1,59 @@
 --- radiant/treemodel.cpp.orig	2006-02-10 22:01:20 UTC
 +++ radiant/treemodel.cpp
-@@ -1243,7 +1243,13 @@ const char* node_get_name(scene::Node& n
+@@ -710,7 +710,13 @@ public:
  
- const char* node_get_name_safe(scene::Node& node)
+ void node_attach_name_changed_callback(scene::Node& node, const NameCallback& callback)
  {
--  if(&node == 0)
+-  if(&node != 0)
 +  // Reference cannot be bound to dereferenced null pointer in well-defined
 +  // C++ code, and Clang will assume that comparison below always evaluates
-+  // to false, resulting in segmentation fault.  Use a dirty hack to insist
-+  // that Clang checks it for null.
++  // to true, resulting in a segmentation fault.  Use a dirty hack to force
++  // Clang to check those "bad" references for null nonetheless.
 +  volatile int n = (int)&node;
 +
++  if(n != 0)
+   {
+     Nameable* nameable = Node_getNameable(node);
+     if(nameable != 0)
+@@ -721,7 +727,9 @@ void node_attach_name_changed_callback(s
+ }
+ void node_detach_name_changed_callback(scene::Node& node, const NameCallback& callback)
+ {
+-  if(&node != 0)
++  volatile int n = (int)&node;		// see the comment on line 713
++
++  if(n != 0)
+   {
+     Nameable* nameable = Node_getNameable(node);
+     if(nameable != 0)
+@@ -1243,7 +1251,9 @@ const char* node_get_name(scene::Node& n
+ 
+ const char* node_get_name_safe(scene::Node& node)
+ {
+-  if(&node == 0)
++  volatile int n = (int)&node;		// see the comment on line 713
++
 +  if(n == 0)
    {
      return "";
    }
-@@ -1264,7 +1270,9 @@ GraphTreeNode* graph_tree_model_find_par
+@@ -1264,7 +1274,9 @@ GraphTreeNode* graph_tree_model_find_par
  
  void node_attach_name_changed_callback(scene::Node& node, const NameCallback& callback)
  {
 -  if(&node != 0)
-+  volatile int n = (int)&node;		// see the comment on line 1246
++  volatile int n = (int)&node;		// see the comment on line 713
 +
 +  if(n != 0)
    {
      Nameable* nameable = Node_getNameable(node);
      if(nameable != 0)
-@@ -1275,7 +1283,9 @@ void node_attach_name_changed_callback(s
+@@ -1275,7 +1287,9 @@ void node_attach_name_changed_callback(s
  }
  void node_detach_name_changed_callback(scene::Node& node, const NameCallback& callback)
  {
 -  if(&node != 0)
-+  volatile int n = (int)&node;		// see the comment on line 1246
++  volatile int n = (int)&node;		// see the comment on line 713
 +
 +  if(n != 0)
    {


More information about the svn-ports-head mailing list