GNU bug report logs - #41914
[PATCH] Propagate return value of auto-loaded command

Previous Next

Package: dejagnu;

Reported by: Tom de Vries <tdevries <at> suse.de>

Date: Wed, 17 Jun 2020 11:41:02 UTC

Owned by: jcb62281 <at> gmail.com

Severity: normal

Tags: patch

Done: Jacob Bachmeyer <jcb62281 <at> gmail.com>

Bug is archived. No further changes may be made.

Full log


Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Tom de Vries <tdevries <at> suse.de>
To: bug-dejagnu <at> gnu.org
Subject: [PATCH] Propagate return value of auto-loaded command
Date: Wed, 17 Jun 2020 13:40:40 +0200
[Message part 1 (text/plain, inline)]
Hi,

I think I found a bug in proc unknown in lib/framework.exp.

Patch describing the problem and fixing it attached below.

Thanks,
- Tom
[0001-Propagate-return-value-of-auto-loaded-command.patch (text/x-patch, inline)]
Propagate return value of auto-loaded command

Consider a library file foo.tcl:
...
$ cat lib/foo.tcl
proc foo { } {
    return "foo-return"
}
...
and a test-case test.tcl:
...
$ cat test.tcl
\#!/usr/bin/tclsh

auto_mkindex lib *.tcl

lappend auto_path [pwd]/lib

set res [foo]
puts "RES: $res"
...
which gives us:
...
$ ./test.tcl
RES: foo-return
...

When overriding the ::unknown command using:
...
rename ::unknown ::tcl_unknown
proc unknown args {
    if {[catch {uplevel 1 ::tcl_unknown $args} msg]} {
        puts "ERROR: proc \"$args\" does not exist."
        exit
    }
}
...
we have instead:
...
$ ./test.tcl
RES:
...

What is missing, is the propagation of the return value of foo, like this:
...
         puts "ERROR: proc \"$args\" does not exist."
         exit
     }
-}
+} else {
+    return $msg
+}
...

Fix unknown in lib/framework.exp accordingly.

ChangeLog:

2020-06-17  Tom de Vries  <tdevries <at> suse.de>

	* lib/framework.exp (unknown): Propagate return value of auto-loaded
	command.

---
 lib/framework.exp | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/lib/framework.exp b/lib/framework.exp
index e6ce197..c9875d2 100644
--- a/lib/framework.exp
+++ b/lib/framework.exp
@@ -272,6 +272,9 @@ proc unknown args {
 	}
 	set exit_status 2
 	log_and_exit
+    } else {
+	# Propagate return value.
+	return $msg
     }
 }
 

This bug report was last modified 5 years and 44 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.