ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/ext/login.ext
(Generate patch)

Comparing deliantra/server/ext/login.ext (file contents):
Revision 1.50 by root, Sun Jun 10 03:14:04 2007 UTC vs.
Revision 1.54 by root, Sat Jun 16 00:12:20 2007 UTC

1#! perl # MANDATORY 1#! perl # mandatory
2 2
3# login handling 3# login handling
4 4
5use Fcntl; 5use Fcntl;
6use Coro::AIO; 6use Coro::AIO;
7use List::Util qw(min max); 7use List::Util qw(min max);
8
9our %EXT_SETUP;
8 10
9# paranoia function to overwrite a string-in-place 11# paranoia function to overwrite a string-in-place
10sub nuke_str { 12sub nuke_str {
11 substr $_[0], 0, (length $_[0]), "x" x length $_[0] 13 substr $_[0], 0, (length $_[0]), "x" x length $_[0]
12} 14}
597 my $ob = $pl->ob; 599 my $ob = $pl->ob;
598 600
599 my $pl_ref = $pl->refcnt_cnt; 601 my $pl_ref = $pl->refcnt_cnt;
600 my $ob_ref = $ob->refcnt_cnt; 602 my $ob_ref = $ob->refcnt_cnt;
601 603
602 ## pl_ref == object + cf::PLAYER + $pl 604 ## pl_ref == $pl + ob->contr + %cf::PLAYER
603 ## ob_ref == being an object + pl->observe + $ob 605 ## ob_ref == $ob + pl->observe + simply being an object
604 if ($pl_ref == 3 && $ob_ref == 3) { 606 if ($pl_ref == 3 && $ob_ref == 3) {
605 warn "player-scheduler destroy ", $ob->name;#d# 607 warn "player-scheduler destroy ", $ob->name;#d#
606 608
607 # remove from sight and get fresh "copies" 609 # remove from sight and get fresh "copies"
608 $pl = delete $cf::PLAYER{$ob->name}; 610 $pl = delete $cf::PLAYER{$ob->name};
609 $ob = $pl->ob; 611 $ob = $pl->ob;
610 612
611 $ob->destroy;
612 $pl->destroy; 613 $pl->destroy; # destroys $ob
613 } else { 614 } else {
614 my $a_ = $pl->refcnt;#d# 615 my $a_ = $pl->refcnt;#d#
615 my $b_ = $ob->refcnt;#d# 616 my $b_ = $ob->refcnt;#d#
616 617
617 warn "player-scheduler refcnt ", $ob->name, " pp$pl_ref,pc$a_ op$ob_ref,oc$b_\n";#d# 618 warn "player-scheduler refcnt ", $ob->name, " pl $pl_ref ob $ob_ref (C pl $a_ ob $b_)\n";#d#
618 } 619 }
619 } 620 }
620 } 621 }
621 }; 622 };
622 warn $@ if $@; 623 warn $@ if $@;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines