ldmud-3.2.9/doc/
ldmud-3.2.9/doc/efun/
ldmud-3.2.9/mud/
ldmud-3.2.9/mud/heaven7/
ldmud-3.2.9/mud/heaven7/lib/
ldmud-3.2.9/mud/lp-245/
ldmud-3.2.9/mud/lp-245/banish/
ldmud-3.2.9/mud/lp-245/doc/
ldmud-3.2.9/mud/lp-245/doc/examples/
ldmud-3.2.9/mud/lp-245/doc/sefun/
ldmud-3.2.9/mud/lp-245/log/
ldmud-3.2.9/mud/lp-245/obj/Go/
ldmud-3.2.9/mud/lp-245/players/lars/
ldmud-3.2.9/mud/lp-245/room/death/
ldmud-3.2.9/mud/lp-245/room/maze1/
ldmud-3.2.9/mud/lp-245/room/sub/
ldmud-3.2.9/mud/lp-245/secure/
ldmud-3.2.9/mud/morgengrauen/
ldmud-3.2.9/mud/morgengrauen/lib/
ldmud-3.2.9/mud/sticklib/
ldmud-3.2.9/mud/sticklib/src/
ldmud-3.2.9/mudlib/uni-crasher/
ldmud-3.2.9/pkg/
ldmud-3.2.9/pkg/debugger/
ldmud-3.2.9/pkg/diff/
ldmud-3.2.9/pkg/misc/
ldmud-3.2.9/src/autoconf/
ldmud-3.2.9/src/bugs/
ldmud-3.2.9/src/bugs/MudCompress/
ldmud-3.2.9/src/bugs/b-020916-files/
ldmud-3.2.9/src/bugs/doomdark/
ldmud-3.2.9/src/bugs/ferrycode/ferry/
ldmud-3.2.9/src/bugs/ferrycode/obj/
ldmud-3.2.9/src/bugs/psql/
ldmud-3.2.9/src/done/
ldmud-3.2.9/src/done/order_alist/
ldmud-3.2.9/src/done/order_alist/obj/
ldmud-3.2.9/src/done/order_alist/room/
ldmud-3.2.9/src/gcc/
ldmud-3.2.9/src/gcc/2.7.0/
ldmud-3.2.9/src/gcc/2.7.1/
ldmud-3.2.9/src/hosts/
ldmud-3.2.9/src/hosts/GnuWin32/
ldmud-3.2.9/src/hosts/amiga/NetIncl/
ldmud-3.2.9/src/hosts/amiga/NetIncl/netinet/
ldmud-3.2.9/src/hosts/amiga/NetIncl/sys/
ldmud-3.2.9/src/hosts/i386/
ldmud-3.2.9/src/hosts/msdos/byacc/
ldmud-3.2.9/src/hosts/msdos/doc/
ldmud-3.2.9/src/hosts/os2/
ldmud-3.2.9/src/hosts/win32/
ldmud-3.2.9/src/util/
ldmud-3.2.9/src/util/erq/
ldmud-3.2.9/src/util/indent/hosts/next/
ldmud-3.2.9/src/util/xerq/
ldmud-3.2.9/src/util/xerq/lpc/
ldmud-3.2.9/src/util/xerq/lpc/www/
Date: Thu, 13 Jan 2000 12:05:53 +0100
From: Michael Fedrowitz <rhodry@magellan.tat.physik.uni-tuebingen.de>
Short: callbacks: patch for ldmud-dev.164
Type: Bug
State: Done - fixed in 3.2.8-dev.176



 Hi,

ich hätte mal wieder 'nen kleinen Patch. :) Der fixed 'n kleines Prob in
execute_callback(), wenn die gegebene Funktion im Callback Object nicht
existiert, was z.B. zur Folge hat, daß filter(arr, "fun", obj) Unsinn macht,
wenn es obj->fun() nicht gibt. Das Problem ist, dass in diesem Fall die 0,
die apply() zurückgibt, ignoriert wird und ganz einfach &apply_return_value
zurückgegeben wird und damit das Ergebnis von irgendeinem vorangegangenem
apply().

-Michael (Rhodry@ForgottenDreams)

--- src/simulate.c.orig	Wed Dec 22 15:39:34 1999
+++ src/simulate.c	Wed Jan 12 22:33:37 2000
@@ -2956,6 +2956,7 @@
 {
     object_t *ob;
     int num_arg;
+    svalue_t *ret_val;
 
     ob = callback_object(cb);
     if (!ob
@@ -3028,9 +3029,10 @@
         call_lambda(&(cb->function.lambda), num_arg + nargs);
         transfer_svalue(&apply_return_value, inter_sp);
         inter_sp--;
+        ret_val = &apply_return_value;
     }
     else
-        apply(cb->function.named.name, ob, num_arg + nargs);
+        ret_val = apply(cb->function.named.name, ob, num_arg + nargs);
 
     if (!keep)
     {
@@ -3039,7 +3041,7 @@
     }
 
     /* Return the result */
-    return &apply_return_value;
+    return ret_val;
 } /* execute_callback() */
 
 /*-------------------------------------------------------------------------*/