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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user