From eaa2bfb5b26bd3a1518c5dcfb2f11476c25a44ad Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Henrik=20Grubbstr=C3=B6m=20=28Grubba=29?=
 <grubba@grubba.org>
Date: Tue, 6 Apr 2004 19:05:38 +0200
Subject: [PATCH] assign() and dup() now seem to work again. Also made them
 more robust.

Rev: lib/modules/Stdio.pmod/module.pmod:1.198
---
 lib/modules/Stdio.pmod/module.pmod | 44 +++++++++---------------------
 1 file changed, 13 insertions(+), 31 deletions(-)

diff --git a/lib/modules/Stdio.pmod/module.pmod b/lib/modules/Stdio.pmod/module.pmod
index 12cc32c4e2..2f5304448c 100644
--- a/lib/modules/Stdio.pmod/module.pmod
+++ b/lib/modules/Stdio.pmod/module.pmod
@@ -1,4 +1,4 @@
-// $Id: module.pmod,v 1.197 2004/04/06 16:40:02 grubba Exp $
+// $Id: module.pmod,v 1.198 2004/04/06 17:05:38 grubba Exp $
 #pike __REAL_VERSION__
 
 inherit files;
@@ -671,22 +671,13 @@ class File
     }else{
       File _o = [object(File)]o;
       _fd = _o->_fd;
-      if(___read_callback = _o->___read_callback)
-	_fd->_read_callback=__stdio_read_callback;
-
-      if(___write_callback = _o->___write_callback)
-	_fd->_write_callback=__stdio_write_callback;
-
-      if ((___close_callback = _o->___close_callback) && (!___read_callback)) {
-	_fd->_read_callback = __stdio_close_callback;
-      }
-      if(___read_oob_callback = _o->___read_oob_callback)
-	_fd->_read_oob_callback = __stdio_read_oob_callback;
-
-      if(___write_oob_callback = _o->___write_oob_callback)
-	_fd->_write_oob_callback = __stdio_write_oob_callback;
+      ___read_callback = _o->___read_callback;
+      ___write_callback = _o->___write_callback;
+      ___close_callback = _o->___close_callback;
+      ___read_oob_callback = _o->___read_oob_callback;
+      ___write_oob_callback = _o->___write_oob_callback;
       ___id = _o->___id;
-      
+      fix_internal_callbacks();
     }
     return 0;
   }
@@ -706,22 +697,13 @@ class File
     to->_fd = _fd;
 
     // FIXME: This looks broken... Isn't __stdio_*_callback declared static?
-    if(to->___read_callback = ___read_callback)
-      _fd->_read_callback=to->__stdio_read_callback;
-
-    if(to->___write_callback = ___write_callback)
-      _fd->_write_callback=to->__stdio_write_callback;
-
-    if ((to->___close_callback = ___close_callback) && (!___read_callback)) {
-      _fd->_read_callback = to->__stdio_close_callback;
-    }
-    if(to->___read_oob_callback = ___read_oob_callback)
-      _fd->_read_oob_callback=to->__stdio_read_oob_callback;
-
-    if(to->___write_oob_callback = ___write_oob_callback)
-      _fd->_write_oob_callback=to->__stdio_write_oob_callback;
+    to->set_read_callback(query_read_callback());
+    to->set_write_callback(query_write_callback());
+    to->set_close_callback(query_close_callback());
+    to->set_read_oob_callback(query_read_oob_callback());
+    to->set_write_oob_callback(query_write_oob_callback());
     to->_setup_debug( debug_file, debug_mode, debug_bits );
-    to->___id = ___id;
+    to->set_id(query_id());
     return to;
   }
 
-- 
GitLab