diff options
author | Tony Garnock-Jones <tonyg@kcbbs.gen.nz> | 2009-04-26 23:56:23 +0100 |
---|---|---|
committer | Tony Garnock-Jones <tonyg@kcbbs.gen.nz> | 2009-04-26 23:56:23 +0100 |
commit | e954a0bf0d30c21b5563db2fd07e5d85d076edc2 (patch) | |
tree | e260702b2a6782499cbc92b67cfbca2e439cc41a /librabbitmq | |
parent | e4614ed78b85be70a6bd973a857205c4b7dcd639 (diff) | |
download | rabbitmq-c-github-ask-e954a0bf0d30c21b5563db2fd07e5d85d076edc2.tar.gz |
Avoid stomping on flags during content properties encoding.
Diffstat (limited to 'librabbitmq')
-rw-r--r-- | librabbitmq/codegen.py | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/librabbitmq/codegen.py b/librabbitmq/codegen.py index 9f6cde0..0967119 100644 --- a/librabbitmq/codegen.py +++ b/librabbitmq/codegen.py @@ -329,15 +329,20 @@ int amqp_encode_properties(uint16_t class_id, similarity of structure between classes */ amqp_flags_t flags = * (amqp_flags_t *) decoded; /* cheating! */ - do { - amqp_flags_t remainder = flags >> 16; - uint16_t partial_flags = flags & 0xFFFE; - if (remainder != 0) { partial_flags |= 1; } - E_16(encoded, offset, partial_flags); - offset += 2; - flags = remainder; - } while (flags != 0); - + { + /* We take a copy of flags to avoid destroying it, as it is used + in the autogenerated code below. */ + amqp_flags_t remaining_flags = flags; + do { + amqp_flags_t remainder = remaining_flags >> 16; + uint16_t partial_flags = remaining_flags & 0xFFFE; + if (remainder != 0) { partial_flags |= 1; } + E_16(encoded, offset, partial_flags); + offset += 2; + remaining_flags = remainder; + } while (remaining_flags != 0); + } + switch (class_id) {""" for c in spec.allClasses(): genEncodeProperties(c) print """ default: return -ENOENT; |