Skip to content

Commit 2c29c56

Browse files
mpoeterJens-G
authored andcommitted
Fix documentation to match implementation
Patch: Manuel Pöter & Jens Geyer This closes #3076
1 parent 9171491 commit 2c29c56

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

doc/specs/thrift-compact-protocol.md

+8-4
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ early implementation bug that finally became the de-facto standard.
112112

113113
Booleans are encoded differently depending on whether it is a field value (in a struct) or an element value (in a set,
114114
list or map). Field values are encoded directly in the field header. Element values of type `bool` are sent as an
115-
`int8`; true as `1` and false as `0`.
115+
`int8`; true as `1` and false as `2`.
116116

117117
### Universal unique identifier encoding
118118

@@ -247,9 +247,9 @@ Where:
247247

248248
The short form should be used when the length is in the range 0 - 14 (inclusive).
249249

250-
The following element-types are used (see note below):
250+
The following element-types are used (see note 1 below):
251251

252-
* `BOOL`, encoded as `2`
252+
* `BOOL`, encoded as `1` or '2' (see note 2 below)
253253
* `I8`, encoded as `3`
254254
* `I16`, encoded as `4`
255255
* `I32`, encoded as `5`
@@ -262,8 +262,12 @@ The following element-types are used (see note below):
262262
* `STRUCT`, used for structs and union fields, encoded as `12`
263263
* `UUID`, encoded as `13`
264264

265-
*Note*: Although field-types and element-types lists are currently very similar, there is _no guarantee_ that this will
265+
*Note*:
266+
1. Although field-types and element-types lists are currently very similar, there is _no guarantee_ that this will
266267
remain true after new types are added.
268+
2. For historical and compatibility reasons, a reader should be capable to deal with *both* cases.
269+
The only valid value in the original spec was '2', but due to an widespread implementation bug the defacto
270+
standard across large parts of the library became '1' instead. As a result, both values are now allowed.
267271

268272
The maximum list/set size is configurable. By default there is no limit (meaning the limit is the maximum int32 value:
269273
2147483647).

0 commit comments

Comments
 (0)