Hi,
I am trying to store large buffers that can potentially grow to 32 GB, but
when using the bytes type, I see the unpack fails when the size is just
below 4GB.
Is that a known limitation? Would you have a recommendation on how to pack
buffers > 32 GB.
proto file:
-------------------------------
syntax = "proto2";
message msg_test {
required bytes buf = 1;
}
-------------------------------
C code:
-------------------------------
//#define PROTOBUF_BYTES_SIZE ((size_t)(0xFFFFFFFF)) //Fails
#define PROTOBUF_BYTES_SIZE ((size_t)(0xFFFFFFFF-5)) //Succeeds
int main(int argc, char** argv)
{
int ret = 0;
MsgTest *msg, *msg2;
size_t len;
uint8_t *buf;
msg = malloc(sizeof(*msg));
if (!msg) {
printf("Failed to allocate proto structure\n");
return -ENOMEM;
}
msg_test__init(msg);
msg->buf.data = malloc(PROTOBUF_BYTES_SIZE);
msg->buf.len = PROTOBUF_BYTES_SIZE;
len = msg_test__get_packed_size(msg);
buf = malloc(len);
if (!buf) {
printf("Failed to allocate memory (len:0x%lx)\n", len);
return -ENOMEM;
}
msg_test__pack(msg, buf);
//msg2 = msg_test__unpack(&my_allocator, len, buf);
msg2 = msg_test__unpack(NULL, len, buf);
if (msg2) {
printf("Unpack successful\n");
msg_test__free_unpacked(msg2, NULL);
} else {
printf("Unpack failed\n");
}
return ret;
}
-------------------------------
Thanks,
David
--
You received this message because you are subscribed to the Google Groups
"Protocol Buffers" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/protobuf/1a5543f3-9dc7-4046-af60-954595859967n%40googlegroups.com.