[ts] Builder incorrectly serializing empty strings (#7047)
authorMax Burke <max@urbanlogiq.com>
Sat, 29 Jan 2022 22:23:57 +0000 (14:23 -0800)
committerGitHub <noreply@github.com>
Sat, 29 Jan 2022 22:23:57 +0000 (14:23 -0800)
* [ts] Builder incorrectly serializing empty strings

The builder was returning an offset of zero for empty strings. This is
leading to flatbuffers which fail verification in other languages, such
as Rust.

* tests expect 0 offset for null or undefined strings

ts/builder.ts

index 9e7a67e..a8c2d1e 100644 (file)
@@ -522,8 +522,11 @@ export class Builder {
      * @param s The string to encode
      * @return The offset in the buffer where the encoded string starts
      */
-    createString(s: string | Uint8Array): Offset {
-      if (!s) { return 0 }
+    createString(s: string | Uint8Array | null | undefined): Offset {
+      if (s === null || s === undefined) {
+        return 0;
+      }
+
       let utf8: string | Uint8Array | number[];
       if (s instanceof Uint8Array) {
         utf8 = s;