fix(google): prevent nil pointer dereference when usage is nil in Stream (#116)

Gabriela Bogk and Gabriela Bogk created

Co-authored-by: Gabriela Bogk <gabriela.bogk@adevinta.com>

Change summary

providers/google/google.go | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)

Detailed changes

providers/google/google.go 🔗

@@ -842,9 +842,14 @@ func (g *languageModel) Stream(ctx context.Context, call fantasy.Call) (fantasy.
 			finishReason = fantasy.FinishReasonStop
 		}
 
+		var finalUsage fantasy.Usage
+		if usage != nil {
+			finalUsage = *usage
+		}
+
 		yield(fantasy.StreamPart{
 			Type:         fantasy.StreamPartTypeFinish,
-			Usage:        *usage,
+			Usage:        finalUsage,
 			FinishReason: finishReason,
 		})
 	}, nil
@@ -1088,9 +1093,14 @@ func (g *languageModel) streamObjectWithJSONMode(ctx context.Context, call fanta
 				finishReason = fantasy.FinishReasonStop
 			}
 
+			var finalUsage fantasy.Usage
+			if usage != nil {
+				finalUsage = *usage
+			}
+
 			yield(fantasy.ObjectStreamPart{
 				Type:         fantasy.ObjectStreamPartTypeFinish,
-				Usage:        *usage,
+				Usage:        finalUsage,
 				FinishReason: finishReason,
 			})
 		} else if streamErr == nil && lastParsedObject == nil {