From 1172db0ccf077bbfef7ddd176ced61c7140cb698 Mon Sep 17 00:00:00 2001 From: Andrey Konovalov Date: Tue, 1 Aug 2017 18:30:20 +0200 Subject: prog: fix encoding for exec of result args ResultArg might have const value. Also add a test. --- prog/encodingexec.go | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) (limited to 'prog/encodingexec.go') diff --git a/prog/encodingexec.go b/prog/encodingexec.go index ba2efcd37..403b09f88 100644 --- a/prog/encodingexec.go +++ b/prog/encodingexec.go @@ -253,11 +253,19 @@ func (w *execContext) writeArg(arg Arg, pid int, csumMap map[Arg]CsumInfo) { w.write(a.Type().BitfieldOffset()) w.write(a.Type().BitfieldLength()) case *ResultArg: - w.write(ExecArgResult) - w.write(a.Size()) - w.write(w.args[a.Res].Idx) - w.write(a.OpDiv) - w.write(a.OpAdd) + if a.Res == nil { + w.write(ExecArgConst) + w.write(a.Size()) + w.write(a.Val) + w.write(0) // bit field offset + w.write(0) // bit field length + } else { + w.write(ExecArgResult) + w.write(a.Size()) + w.write(w.args[a.Res].Idx) + w.write(a.OpDiv) + w.write(a.OpAdd) + } case *PointerArg: w.write(ExecArgConst) w.write(a.Size()) -- cgit mrf-deployment