-- Leo's gemini proxy

-- Connecting to git.thebackupbox.net:1965...

-- Connected

-- Sending request

-- Meta line: 20 text/gemini

repo: rxvt-unicode-sixel
action: commit
revision:
path_from:
revision_from: 10679312a74dbfdb757deb8ea95eb6957ea614dc:
path_to:
revision_to:

git.thebackupbox.net

rxvt-unicode-sixel

git://git.thebackupbox.net/rxvt-unicode-sixel

commit 10679312a74dbfdb757deb8ea95eb6957ea614dc
Author: Marc Lehmann <schmorp@schmorp.de>
Date:   Wed Jan 4 19:39:46 2006 +0000

    *** empty log message ***

diff --git a/src/urxvt.pm b/src/urxvt.pm

index 516df3b8e4cf76000e0e4e6410df5c126b064945..

index ..ae5449c075f910bb9c93ff076c23ded77ddb577a 100644

--- a/src/urxvt.pm
+++ b/src/urxvt.pm
@@ -368,6 +368,8 @@ sub script_package($) {
    }
 }

+our $retval; # return value for urxvt
+
 # called by the rxvt core
 sub invoke {
    local $TERM = shift;
@@ -385,37 +387,45 @@ sub invoke {
             warn "perl extension '$ext' not found in perl library search path\n";
          }
       }
+   }
+
+   $retval = undef;

-   } elsif ($htype == 1) { # DESTROY
+   if (my $cb = $TERM->{_hook}[$htype]) {
+      verbose 10, "$HOOKNAME[$htype] (" . (join ", ", $TERM, @_) . ")"
+         if $verbosity >= 10;
+
+      keys %$cb;
+
+      while (my ($pkg, $cb) = each %$cb) {
+         $retval = $cb->(
+            $TERM->{_pkg}{$pkg} ||= do {
+               my $proxy = bless { }, urxvt::term::proxy::;
+               Scalar::Util::weaken ($proxy->{term} = $TERM);
+               $proxy
+            },
+            @_,
+         ) and last;
+      }
+   }
+
+   if ($htype == 1) { # DESTROY
+      # remove hooks if unused
       if (my $hook = $TERM->{_hook}) {
          for my $htype (0..$#$hook) {
             $hook_count[$htype] -= scalar keys %{ $hook->[$htype] || {} }
                or set_should_invoke $htype, 0;
          }
       }
-   }
-
-   my $cb = $TERM->{_hook}[$htype]
-      or return;
-
-   verbose 10, "$HOOKNAME[$htype] (" . (join ", ", $TERM, @_) . ")"
-      if $verbosity >= 10;

-   keys %$cb;
+      # clear package objects
+      %$_ = () for values %{ $TERM->{_pkg} };

-   while (my ($pkg, $cb) = each %$cb) {
-      return 1
-         if $cb->(
-               $TERM->{$pkg} ||= do {
-                  my $proxy = bless { }, urxvt::term::proxy::;
-                  Scalar::Util::weaken ($proxy->{term} = $TERM);
-                  $proxy
-               },
-               @_,
-            );
+      # clear package
+      %$TERM = ();
    }

-   0
+   $retval
 }

 sub urxvt::term::proxy::AUTOLOAD {

-----END OF PAGE-----

-- Response ended

-- Page fetched on Sun Jun 2 09:44:34 2024