From 24b58ec7b7bd68b8254edc0e0396fb12903a1f43 Mon Sep 17 00:00:00 2001
From: Fredrik Noring <noring@nocrew.org>
Date: Fri, 26 Jun 1998 18:43:34 +0200
Subject: [PATCH] Fixed append_right.

Rev: lib/modules/ADT.pmod/Table.pmod:1.9
---
 lib/modules/ADT.pmod/Table.pmod | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/lib/modules/ADT.pmod/Table.pmod b/lib/modules/ADT.pmod/Table.pmod
index b07be11fe3..251f4ea2d9 100644
--- a/lib/modules/ADT.pmod/Table.pmod
+++ b/lib/modules/ADT.pmod/Table.pmod
@@ -1,5 +1,5 @@
 // Table.pmod by Fredrik Noring, 1998
-// $Id: Table.pmod,v 1.8 1998/06/24 17:02:42 noring Exp $
+// $Id: Table.pmod,v 1.9 1998/06/26 16:43:34 noring Exp $
 
 #define TABLE_ERR(msg) throw(({ "(Table) "+msg+"\n", backtrace() }))
 
@@ -103,11 +103,10 @@ class table {
   {
     if(sizeof(t) != sizeof(table))
       TABLE_ERR("Table sizes are not equal.");
-    fields += indices(t);
     array v = values(t);
     for(int r = 0; r < sizeof(table); r++)
-      table[r] = table[r] + v[r];
-    return this_object();
+      v[r] = table[r] + v[r];
+    return copy(v, fields+indices(t), types+t->all_types());
   }
 
   static private mixed op_col(function f, int|string c, mixed ... args)
@@ -271,6 +270,11 @@ class table {
     return copy_value(types[remap(c)]);
   }
 
+  array all_types()
+  {
+    return copy_value(types);
+  }
+
   void create(array(array) tab, array(string) fie, array|void typ)
   {
     if(!arrayp(tab))
-- 
GitLab