[OpenBIOS] [commit] r1273 - trunk/openbios-devel/libopenbios

repository service svn at openbios.org
Sat Mar 8 01:59:59 CET 2014


Author: mcayland
Date: Sat Mar  8 01:59:59 2014
New Revision: 1273
URL: http://tracker.coreboot.org/trac/openbios/changeset/1273

Log:
client.c: fix up return value from CIF call-method/interpret

The handle_calls() function was accidentally using the client-call-iface return
value instead of the catch wrapping the underlying call.

Return the correct catch result, and while we're at it add some extra logging
to indicate when we've detected an error condition.

Signed-off-by: Mark Cave-Ayland <mark.cave-ayland at ilande.co.uk>

Modified:
   trunk/openbios-devel/libopenbios/client.c

Modified: trunk/openbios-devel/libopenbios/client.c
==============================================================================
--- trunk/openbios-devel/libopenbios/client.c	Wed Mar  5 01:04:32 2014	(r1272)
+++ trunk/openbios-devel/libopenbios/client.c	Sat Mar  8 01:59:59 2014	(r1273)
@@ -261,15 +261,22 @@
 	push_str(get_service(pb));
 	fword("client-call-iface");
 
+	/* Ignore client-call-iface return */
+	POP();
+
 	/* If the catch result is non-zero, restore stack and exit */
 	val = POP();
 	if (val) {
+		printk("%s %s failed with error " FMT_ucellx "\n", get_service(pb), arg2pointer(pb->args[0]), val);
 		dstackcnt = dstacksave;
 		return 0;
 	}
 
+	/* Store catch result */
+	pb->args[pb->nargs] = val;
+	
 	j = dstackcnt;
-	for (i = 0; i < pb->nret; i++, j--) {
+	for (i = 1; i < pb->nret; i++, j--) {
                 if (dstackcnt > dstacksave) {
 			pb->args[pb->nargs + i] = POP();
 		}



More information about the OpenBIOS mailing list