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