From 481748b9dbccabf64c63c84a56f74c6f2ded5442 Mon Sep 17 00:00:00 2001
From: Martin Stjernholm <mast@lysator.liu.se>
Date: Thu, 11 May 2000 06:30:25 +0200
Subject: [PATCH] Use constants to recognize dir- and joinnodes. It doesn't
 work to do things like object_program(foo) == dirnode, since object_program()
 tries to look up the function identifier in the parent object, and that will
 be different if something inherits the master and replaces it.

Rev: lib/master.pike.in:1.118
---
 lib/master.pike.in | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/lib/master.pike.in b/lib/master.pike.in
index f45c64ea3d..6edf85f413 100644
--- a/lib/master.pike.in
+++ b/lib/master.pike.in
@@ -1,6 +1,6 @@
 /* -*- Pike -*-
  *	
- * $Id: master.pike.in,v 1.117 2000/05/07 00:39:52 hubbe Exp $
+ * $Id: master.pike.in,v 1.118 2000/05/11 04:30:25 mast Exp $
  * 
  * Master-file for Pike.
  *
@@ -588,6 +588,7 @@ object cast_to_object(string oname, string current_file)
 
 class dirnode
 {
+  constant is_resolv_dirnode = 1;
   string dirname;
   mixed module=module_checker();
   mapping(string:mixed) cache=([]);
@@ -710,6 +711,7 @@ static class ZERO_TYPE {};
 
 class joinnode
 {
+  constant is_resolv_joinnode = 1;
   array(object|mapping) joined_modules;
   mapping(string:mixed) cache=([]);
 
@@ -727,7 +729,8 @@ class joinnode
       if (!zero_type(ret = o[index])) 
       {
 	if (objectp(ret = o[index]) &&
-	    (< joinnode, dirnode >)[object_program(ret)]) 
+	    (object_program(ret)->is_resolv_dirnode ||
+	     object_program(ret)->is_resolv_joinnode))
         {
 	  // Only join directorynodes (or joinnodes).
 	  res += ({ ret });
@@ -845,7 +848,8 @@ mixed resolv_base(string identifier, string|void current_file)
     string file=combine_path(path,identifier);
     if(mixed ret=findmodule(file)) {
       if ((objectp(ret)) &&
-	  (< joinnode, dirnode >)[object_program(ret)]) {
+	  (object_program(ret)->is_resolv_dirnode ||
+	   object_program(ret)->is_resolv_joinnode)) {
 	if (mixed new_ret = ret->_module_value) {
 	  ret = new_ret;
 	}
-- 
GitLab