From 20bc1feeaa45d7c4301823c29e719d9a909ef5f3 Mon Sep 17 00:00:00 2001 From: Jan Wassenberg Date: Wed, 19 Aug 2026 11:56:15 -0700 Subject: [PATCH] Allow 0-valued string fields PiperOrigin-RevId: 967331704 --- io/fields.cc | 13 ------------- io/fields_test.cc | 3 --- 2 files changed, 16 deletions(-) diff --git a/io/fields.cc b/io/fields.cc index 6b54a465..afb36920 100644 --- a/io/fields.cc +++ b/io/fields.cc @@ -64,16 +64,6 @@ class VisitorBase : public IFieldsVisitor { } return true; } - - bool CheckStringU32(uint32_t u32, uint32_t i, uint32_t num_u32) { - // Although strings are zero-padded to u32, an entire u32 should not be - // zero. - if (HWY_UNLIKELY(u32 == 0)) { - NotifyInvalid("Invalid characters %x at %u of %u\n", u32, i, num_u32); - return false; - } - return true; - } }; class PrintVisitor : public VisitorBase { @@ -170,7 +160,6 @@ class ReadVisitor : public VisitorBase { for (uint32_t i = 0; i < num_u32; ++i) { uint32_t u32; operator()(u32); - (void)CheckStringU32(u32, i, num_u32); hwy::CopyBytes(&u32, value.data() + i * k4, k4); } @@ -278,7 +267,6 @@ class WriteVisitor : public VisitorBase { for (uint32_t i = 0; i < num_whole_u32; ++i) { uint32_t u32 = 0; hwy::CopyBytes(value.data() + i * k4, &u32, k4); - if (HWY_UNLIKELY(!CheckStringU32(u32, i, num_u32))) return; storage_.push_back(u32); } @@ -292,7 +280,6 @@ class WriteVisitor : public VisitorBase { const uint32_t next = static_cast(static_cast(c)); u32 += next << (i * 8); } - if (HWY_UNLIKELY(!CheckStringU32(u32, num_whole_u32, num_u32))) return; storage_.push_back(u32); } } diff --git a/io/fields_test.cc b/io/fields_test.cc index 2b1e0226..92ffdcbc 100644 --- a/io/fields_test.cc +++ b/io/fields_test.cc @@ -280,9 +280,6 @@ TEST(FieldsTest, TestInvalidFloat) { // Refuse to write invalid strings. TEST(FieldsTest, TestInvalidString) { NewFields new_fields; - // Four zero bytes - new_fields.new_str.assign(4, '\0'); - EXPECT_TRUE(new_fields.Write().empty()); // Too long new_fields.new_str.assign(257, 'a');