MOO-cows Mailing List Archive

[Prev][Next][Index][Thread]

RE: Possible bug



I haven't looked in the source but I would guess this is because raise() acts 
like return in the sense that all it does is return an error datatype, and isn't 
a direct error, with or without the debug flag raised.  It doesn't actually
pass through the normal error handling operations.  In the same vein, you'll
note that `E_PERM ! E_PERM => E_INVARG' returns E_PERM too.

If however, this is the behaviour you want, then create #0:bf_raise rxd and
add this one line:

   raise(args[1]);

(and of course create/set $server_options.protect_raise to 1)

and then `raise(E_PERM) ! E_PERM => E_INVARG' will return E_INVARG
and any other kind of error atom will cause a traceback of that type.


----------
From:  Brian Buchanan[SMTP:brian@wasteland.calbbs.com]
Sent:  Wednesday, March 27, 1996 1:52 AM
To:  moo-cows.PARC@xerox.com
Subject:  Possible bug

eval-d `raise(E_PERM) ! E_PERM => E_INVARG'
=> E_PERM  (Permission denied)

Shouldn't this return E_INVARG, even if the debug bit is unset?  Otherwise it
kinda defeats the purpose of the `' notation if used in !d verbs.

Server version 1.8.0p2, standard LambdaCore eval-d.

---
   Brian Buchanan    sysop@calbbs.com    brian@wasteland.calbbs.com
-= ArchWizard of Digital Wasteland MOO (wasteland.calbbs.com 8888) =-





Follow-Ups:

Home | Subject Index | Thread Index