From 64f6bd0f61ac08682c8ec21da7057db9ed87b3f8 Mon Sep 17 00:00:00 2001
From: Martin Stjernholm <mast@lysator.liu.se>
Date: Tue, 16 May 2000 23:48:47 +0200
Subject: [PATCH] Can't simply look for _encode_object in every object, since
 if it's a Remote.Obj object it will happily return a Call object then. Thus
 no remote objects were encoded correctly when sent back.

Rev: lib/modules/Remote.pmod/call.pike:1.5
Rev: lib/modules/Remote.pmod/context.pike:1.10
Rev: lib/modules/Remote.pmod/obj.pike:1.3
---
 lib/modules/Remote.pmod/call.pike    | 2 ++
 lib/modules/Remote.pmod/context.pike | 2 +-
 lib/modules/Remote.pmod/obj.pike     | 2 ++
 3 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/lib/modules/Remote.pmod/call.pike b/lib/modules/Remote.pmod/call.pike
index 2fa3abc55e..6ddd6c7308 100644
--- a/lib/modules/Remote.pmod/call.pike
+++ b/lib/modules/Remote.pmod/call.pike
@@ -1,6 +1,8 @@
 
 #include "remote.h"
 
+constant is_remote_call = 1;
+
 string objectid;
 string name;
 object con;
diff --git a/lib/modules/Remote.pmod/context.pike b/lib/modules/Remote.pmod/context.pike
index f137895901..8f5825c1eb 100644
--- a/lib/modules/Remote.pmod/context.pike
+++ b/lib/modules/Remote.pmod/context.pike
@@ -97,7 +97,7 @@ array encode(mixed val)
 {
   if (intp(val) || floatp(val))
     return ({ CTX_OTHER, val });
-  if (objectp(val) && !val->_encode_object)
+  if (objectp(val) && (object_program(val)->is_remote_obj || !val->_encode_object))
     return ({ CTX_OBJECT, id_for(val) });
   if (functionp(val) || programp(val))
     return ({ CTX_FUNCTION, id_for(val) });
diff --git a/lib/modules/Remote.pmod/obj.pike b/lib/modules/Remote.pmod/obj.pike
index 61d9c803c9..bbc67f7c76 100644
--- a/lib/modules/Remote.pmod/obj.pike
+++ b/lib/modules/Remote.pmod/obj.pike
@@ -1,6 +1,8 @@
 
 #include "remote.h"
 
+constant is_remote_obj = 1;
+
 string id;
 object con;
 object ctx;
-- 
GitLab