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.

Reply via email to