lang: funcs: Send empty values when appropriate

I seem to have forgotten to differentiate between the empty string and
no data because the zero value for the stored result was the empty
string. This turns it into a pointer so that we don't block the function
engine if a template or one of the other patched functions sends an
empty string as the first value.
This commit is contained in:
James Shubin
2019-12-30 12:35:08 -05:00
parent ff20e67d07
commit 762c53fb8d
10 changed files with 39 additions and 32 deletions

View File

@@ -51,7 +51,7 @@ type PrintfFunc struct {
init *interfaces.Init
last types.Value // last value received to use for diff
result string // last calculated output
result *string // last calculated output
closeChan chan struct{}
}
@@ -224,10 +224,10 @@ func (obj *PrintfFunc) Stream() error {
return err // no errwrap needed b/c helper func
}
if obj.result == result {
if obj.result != nil && *obj.result == result {
continue // result didn't change
}
obj.result = result // store new result
obj.result = &result // store new result
case <-obj.closeChan:
return nil
@@ -235,7 +235,7 @@ func (obj *PrintfFunc) Stream() error {
select {
case obj.init.Output <- &types.StrValue{
V: obj.result,
V: *obj.result,
}:
case <-obj.closeChan:
return nil