diff --git a/forth/system/ciface.fs b/forth/system/ciface.fs index b2035bc..aada422 100644 --- a/forth/system/ciface.fs +++ b/forth/system/ciface.fs @@ -341,4 +341,5 @@ device-end : client-call-iface ( [args] name len -- [args] -1 | [rets] 0 ) ciface-ph find-method 0= if -1 exit then execute + 0 ; diff --git a/libopenbios/client.c b/libopenbios/client.c index ffb6a31..178ffa2 100644 --- a/libopenbios/client.c +++ b/libopenbios/client.c @@ -302,11 +302,11 @@ of_client_interface( int *params ) return -1; } - for( i=0; inret && dstackcnt > dstacksave ; i++ ) - pb->args[pb->nargs + i] = POP(); + for( pb->nret=0; dstackcnt > dstacksave ; pb->nret++ ) + pb->args[pb->nargs + pb->nret] = POP(); #ifdef DEBUG_CIF - if( i != pb->nret || dstackcnt != dstacksave ) { + if( dstackcnt != dstacksave ) { printk("service %s: argument count error (%d %d)\n", pb->service, i, dstackcnt - dstacksave ); dstackcnt = dstacksave;