diff options
| author | Andrey Konovalov <andreyknvl@gmail.com> | 2017-08-01 18:55:46 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-08-01 18:55:46 +0200 |
| commit | 890882a0cf6eeecb32ec0d79cff56660f573b8c9 (patch) | |
| tree | 250340bf3fd2fb02b203e5d3744bfe768aa7d8fe /prog/encodingexec.go | |
| parent | 954d506c30317669bbe449fac7e875d71895c67c (diff) | |
| parent | 1172db0ccf077bbfef7ddd176ced61c7140cb698 (diff) | |
Merge pull request #317 from xairy/up-fix-result-enc
prog: fix encoding for exec of result args
Diffstat (limited to 'prog/encodingexec.go')
| -rw-r--r-- | prog/encodingexec.go | 18 |
1 files changed, 13 insertions, 5 deletions
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()) |
