Skip to content

Fix deserialization of partial System.Version objects#219

Merged
yfakariya merged 2 commits intomsgpack:masterfrom
ioi-christianco:master
Mar 26, 2017
Merged

Fix deserialization of partial System.Version objects#219
yfakariya merged 2 commits intomsgpack:masterfrom
ioi-christianco:master

Conversation

@ioi-christianco
Copy link
Copy Markdown
Contributor

Hi, and thank you for the library !

We are encountering an error when deserializing System.Version objects, because of some weird internals of that class.
System.Version has two partial constructor taking 2 and 3 arguments instead of 4, to only specify part of the Version structure.
When constructing using these Version, will use -1 for the omitted values.
If trying to re-construct such a Version object, providing the -1 value to the full constructor will throw an ArgumentOutOfRange exception.

I added tests for the two additional constructor and fixed the issue by checking what constructor to use depending on the set values.

Thanks!

System.Version can take 2 and 3 parameters, in which case Build and
Revision can be assign -1 as an invalid value.
In this case, deserialization will fail as -1 is not accepted as a
parameter of the constructor taking 4 arguments.
System.Version was not deserializing if the Build or Revision components
were not provided in the constructor.
@yfakariya yfakariya merged commit a2ea3d9 into msgpack:master Mar 26, 2017
@yfakariya
Copy link
Copy Markdown
Member

Sorry for delay. Thank you for contribution!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants