Hi,
I came across a weird behavior when using capnproto and was wondering if
there was something I'm doing wrong or if this is a potential bug in the
system. Consider the following schema that I created:
@0xb9e4b6b777f18b59;
struct Fields {
field1 @0 :Int32;
field2 @1 :Int64;
field3 @2 :Int32;
eventType : union {
unknownEvent @3: Void;
sampleEvent : group {
field4 @4 :Int32;
request : union {
field5 @5: Void;
field6 : group {
field7 @6 :Int16;
field8 @7 :Int32;
field9 @8 :Float64;
field10 @9 :Int32;
}
}
}
}
}
I noticed that when I set field8 = 100 and then field10 = 200, field8 also
becomes 200. I decided to look at the byte layout that this schema created
using capnp compile -ocapnp and saw the following:
# sample.capnp
@0xb9e4b6b777f18b59;
struct Fields @0x87848103d33eda11 { # 40 bytes, 0 ptrs
field1 @0 :Int32; # bits[0, 32)
field2 @1 :Int64; # bits[64, 128)
field3 @2 :Int32; # bits[32, 64)
eventType :group {
union { # tag bits [128, 144)
unknownEvent @3 :Void; # bits[0, 0), union tag = 0
sampleEvent :group { # union tag = 1
field4 @4 :Int32; # bits[160, 192)
request :group {
union { # tag bits [144, 160)
field5 @5 :Void; # bits[0, 0), union tag = 0
field6 :group { # union tag = 1
field7 @6 :Int16; # bits[192, 208)
field8 @7 :Int32; # bits[224, 256)
field9 @8 :Float64; # bits[256, 320)
field10 @9 :Int32; # bits[224, 256)
}
}
}
}
}
}
}
Notice how field 8 and field10 occupy the same memory region! Am I doing
something wrong here or is this a bug? I tried this on the latest version
of capnproto as well as version 0.5.2 and saw the same behavior. Any
feedback would be greatly appreciated!
Thanks,
-David
--
You received this message because you are subscribed to the Google Groups
"Cap'n Proto" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
Visit this group at https://groups.google.com/group/capnproto.