Merge pull request #352 from haberman/large-field-number

Fixed upb encoder for field numbers > 2**28.
pull/13171/head
Joshua Haberman 4 years ago committed by GitHub
commit cd7c2d2701
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 4
      tests/bindings/lua/test.proto
  2. 8
      tests/bindings/lua/test_upb.lua
  3. 3
      upb/encode.c

@ -22,3 +22,7 @@ message UnpackedTest {
repeated fixed32 f32_packed = 4 [packed = false];
repeated fixed64 f64_packed = 5 [packed = false];
}
message TestLargeFieldNumber {
optional int32 i32 = 456214797;
}

@ -706,6 +706,14 @@ function test_encode_depth_limit()
assert_error(function() upb.encode(msg) end)
end
function test_large_field_number()
local msg = upb_test.TestLargeFieldNumber()
msg.i32 = 5
local serialized = upb.encode(msg)
local msg2 = upb.decode(upb_test.TestLargeFieldNumber, serialized)
assert_equal(msg.i32, msg2.i32)
end
function test_gc()
local top = test_messages_proto3.TestAllTypesProto3()
local n = 100

@ -134,7 +134,8 @@ static void encode_float(upb_encstate *e, float d) {
encode_fixed32(e, u32);
}
static void encode_tag(upb_encstate *e, int field_number, int wire_type) {
static void encode_tag(upb_encstate *e, uint32_t field_number,
uint8_t wire_type) {
encode_varint(e, (field_number << 3) | wire_type);
}

Loading…
Cancel
Save