msgpack-c icon indicating copy to clipboard operation
msgpack-c copied to clipboard

Conversions between float and int are not type-checked.

Open mayuehit opened this issue 1 year ago • 4 comments

Describe the bug I've been using msgpack-c 4.0.0, which does type checking for conversions between float and int.But when I updated to 4.1.3, I found that the same code produced a different behavior.

To Reproduce

Code:

  float original_value = 1.0;

  msgpack::sbuffer buffer;
  msgpack::pack(buffer, original_value);

  msgpack::object_handle oh = msgpack::unpack(buffer.data(), buffer.size());

  try {
      int unpacked_value = oh.get().as<int>();
      std::cout << "Unpacked value: " << unpacked_value << std::endl;
  } catch (const std::exception& e) {
      std::cerr << "Failed to unpack as int " << e.what() << std::endl;
  }

Output: When I run this code with msgpack-c 4.0.0

Failed to unpack as int std::bad_cast

But when I run this code with msgpack-c 4.1.3

Unpacked value: 1

Please prepare https://stackoverflow.com/help/minimal-reproducible-example

Expected behavior I expect it to report an error, because this kind of unchecked type conversion tends to be problematic.

mayuehit avatar Aug 22 '24 02:08 mayuehit

Thank you for reporting this issue. The change was introduced in pull request #1018, which addresses issue #1017 that explains the rationale behind this update.

This update was implemented in version 4.1.2. You can refer to the changelog here: https://github.com/msgpack/msgpack-c/blob/cpp_master/CHANGELOG.md#2022-09-07-version-412-for-c.

At that time, I considered it a minor refinement, so I only incremented the patch version. However, in hindsight, it might have been more appropriate to update the major version. Anyway, this is an expected behavior.

redboltz avatar Aug 22 '24 02:08 redboltz

您好,您的邮件已收到,我会尽快给您回复,谢谢。

mayuehit avatar Aug 22 '24 02:08 mayuehit

This appears to have been resolved by https://github.com/msgpack/msgpack-c/pull/1144. Perhaps this issue can now be closed?

mark-edgington avatar Jul 28 '25 22:07 mark-edgington

您好,您的邮件已收到,我会尽快给您回复,谢谢。

mayuehit avatar Jul 28 '25 22:07 mayuehit