Commit Graph

219 Commits

Author SHA1 Message Date
Takatoshi Kondo 6f24d240e1 Supported all msgpack object types.
Fixed cmake warning.
2024-08-17 13:40:58 +09:00
Athish Pranav D 985184b647 Added tests for the Init functionality
Signed-off-by: Athish Pranav D <athishanna@gmail.com>
2024-08-17 08:51:23 +05:30
Athish Pranav D 96493f581d Nit
Signed-off-by: Athish Pranav D <athishanna@gmail.com>
2024-08-13 13:31:24 +05:30
Athish Pranav D c1cb968c04 Add msgpack obj init for complex types
Signed-off-by: Athish Pranav D <athishanna@gmail.com>
2024-08-13 13:27:17 +05:30
Daniil Kovalev 0f1d0ed78c Fix name conflicts (C version)
Same as #952, but for C
2021-05-08 16:51:02 +03:00
Vincent Mallet 1c97e051ad Fixes #941
Don't abort serialization when running into empty strings in msgpack_object_print_buffer().
Added a couple of unit tests to test empty string cases.
2021-03-23 13:56:03 -07:00
yuangongji b1725d4007 vrefbuffer: set default ref_size and chunk_size 2020-04-30 19:26:07 +08:00
Torleiv Sundre a6bf728a5c Correctly check return value of snprintf
In MSGPACK_CHECKED_CALL, the return value of snprintf is incorrectly
assumed to mean success if it is less than or equal to the buffer size.
The call should only be considered a success if the return value is less
than the buffer size.

This commit adds two unit tests that illustrates the issue and fixes the
issue, making the unit tests pass.
2019-12-04 14:20:12 +01:00
Takatoshi Kondo 7cdc5b88e3 Merge pull request #780 from redboltz/fix_774
Fixed #774.
2019-05-27 17:05:55 +09:00
David LeBlanc 7a70d74971 Use a #define to only check for integer overflow when it is actually
possible
2019-05-08 18:49:55 -07:00
David LeBlanc fcf89fe901 Fix tabs, also attempt work-around for compile time constant conditional
warning
2019-05-08 17:59:10 -07:00
Takatoshi Kondo ec8c0bc1c1 Fixed #774.
Added checking code for snprintf return value.
2019-05-07 14:00:35 +09:00
David LeBlanc a2f3689865 Older compilers don't allow declaring variables other than at the top of
the block if it is a C file.
2019-05-06 19:28:25 -07:00
David LeBlanc 2d54c0e918 Change integer overflow check to conform with spec 2019-05-06 17:29:40 -07:00
David LeBlanc fadc615f4e Fix typo 2019-04-19 14:08:09 -07:00
David LeBlanc eff6f5a2fd Two more tabs 2019-04-11 15:58:49 -07:00
David LeBlanc ed30252bdc Spaces not tabs 2019-04-11 15:57:25 -07:00
David LeBlanc 2deed25da0 Fix for issue 775
Fix possibly incorrect integer overflow check with an efficient correct check. Not fixing the issue where size == 0, unsure if this is by design, or what error to return if not.
2019-04-11 15:54:12 -07:00
Petr Benes 09e06a8cb7 Add support for Windows Drivers 2019-01-17 17:44:57 +01:00
Takatoshi Kondo b893f7750c Fixed #746.
Eliminated redundant zone allocation in unpacking process.
ARRAY and MAP is construced on the zone.
STR, BIN, and EXT refer to unpack buffer, and the buffer is reference
counted via zone (finalizer).

So zone is only needed if those types are appeared during unpacking
process.

I set zone to NULL by default. And the context has the pointer to
pointer to the zone. If the context meets ARRAY, MAP, STR, BIN, or EXT,
and zone (via pointer) is NULL, then allocate new zone.

It is lazy zone allocation strategy.
2018-11-23 11:08:08 +09:00
tbeu d72765870a Move overflow check up 2018-09-06 15:09:52 +02:00
tbeu c056026dad Fix memory leaks 2018-09-04 22:24:40 +02:00
jwang b3dfe28be4 adding int overflow checks to vrefbuffer 2018-09-03 22:23:52 +02:00
jwang e703d8a2f7 adding int overflow checks to vrefbuffer 2018-09-03 22:23:52 +02:00
tbeu c99fd62ae6 Fix VS2010 build errors on return types 2018-09-02 19:55:33 +02:00
Takatoshi Kondo 5ece2ef2c7 Fixed #637.
<<< Breaking change >>>
In the functions unpack() and parse(),
Old behavior: If any parse error is happend, offset is NOT updated.
New behavior: If any parse error is happend, offset is updated to the
position the error happened.

It helps MessagePack format error analysis.

If you want to old behavior, copy the original value of offset and then call unpack()
and/or parse().
2017-10-22 18:22:41 +09:00
Stefan Herbrechtsmeier 004939e732 Pass wildcard precision of snprintf as int
Signed-off-by: Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com>
2017-03-22 13:05:47 +01:00
Takatoshi Kondo a933fa5892 Merge pull request #557 from obache/neatsrc/fix-char-subscripts-warnings
Make sure to pass `unsigned char` to `isprint()`
2017-01-13 14:15:15 +09:00
OBATA Akio c955727d8c Make sure to pass unsigned char to isprint()
This change make safe for `char = signed char`.

As the spec, argment of `isprintf()` must be representabe as an
`unsigned char` (or equal to EOF, not expected here).
Additionally, some implementation define it as a macro using array,
then it cause warning "array subscript has type `char` [-Wchar-subscripts]"
with `char` argments.
2017-01-12 15:01:04 +09:00
OBATA Akio 094b70213a Strip unwanted CR before EOL 2017-01-12 14:35:51 +09:00
Takatoshi Kondo 364fc0daf6 Fixed redundant caluclation. 2016-12-14 10:02:49 +09:00
Takatoshi Kondo 9a113bb0ca Fixed C unpack return code. 2016-12-14 00:07:43 +09:00
Takatoshi Kondo c5c3de8f61 Fixed integer overflow and EXT size problem. 2016-12-13 15:47:20 +09:00
Takatoshi Kondo ccc9ac5538 Fixed #521.
Introduced new object type `FLOAT32` and `FLOAT64`.
`FLOAT64` is equivalent to `FLOAT`.
The both internal expressions are f64(double).
2016-10-11 23:23:06 +09:00
Eduardo Silva b90bcf3c11 unpack: unpacker_next_with_size() update parsed bytes on success or continue
This patch makes unpacker_next_with_size(...), update p_bytes when
unpacker_next() returns MSGPACK_UNPACK_SUCCESS or MSGPACK_UNPACK_CONTINUE.

Signed-off-by: Eduardo Silva <eduardo@treasure-data.com>
2016-09-06 10:46:30 -06:00
Eduardo Silva d9a77e220a unpack: new msgpack_unpacker_next_with_size() function
This new function is an extension of the original msgpack_unpacker_next()
where it now adds third argument to store the number of parsed bytes for
the returned buffer upon a MSGPACK_UNPACK_SUCCESS case.

This is useful for cases where the caller needs to optimize memory usage
in the original buffer,s so upon success retrieval of the object, it can
later deprecate the already 'parsed' bytes.

For more details about the origins of this function please refer to the
following issue on github:

  https://github.com/msgpack/msgpack-c/issues/514

Signed-off-by: Eduardo Silva <eduardo@treasure-data.com>
2016-08-31 16:49:14 -06:00
Stefan Mititelu c73d9a9dab Print unprintable characters in memory buffer 2016-07-19 12:17:38 +00:00
Takatoshi Kondo 48abfe7aa1 Adusted coding style. 2016-07-16 10:25:38 +09:00
Takatoshi Kondo 8105c33f9d Merge branch 'bin-printer' of https://github.com/iphydf/msgpack-c into iphydf-bin-printer 2016-07-16 10:19:40 +09:00
Takatoshi Kondo b9bc9d4195 Replaced uint32_t with size_t.
User buffer size is not limited by msgpack-c so size_t is the
appropriate type.
2016-07-16 09:32:19 +09:00
iphydf 1da0539a00 Improve bin/ext printer for unprintable characters.
msgpack_object_print used fwrite to write binary data to a stream. The intention
of the function is to produce a human-readable representation of the object for
debugging purposes. Having arbitrary data dumped as is can cause issues with
terminals that interpret it as control sequences.

This change prints printable characters as is and unprintable characters as
hex-escapes ("\xNN"). Note that UTF-8 encoded characters will now be printed as
escaped sequence of UTF-8 bytes. This is an acceptable compromise, as doing
otherwise would require a light form of UTF-8 decoding and BIN-typed objects
should not be used to transport UTF-8 strings anyway (STR should be used
instead).
2016-07-12 13:31:05 +02:00
Stefan Mititelu 4fa661a63d Add msgpack_object_print_buffer() function
In order to print the msgpack object in a memory buffer.
2016-07-07 22:43:48 +03:00
Takatoshi Kondo 4ee616bbde Removed autotools and msvc files.
Please use cmake.
2016-06-05 21:54:59 +09:00
Takatoshi Kondo 89faf6ee9f Updated boost predef and preprocessor from 1.58.0 to 1.61.0 2016-05-30 13:20:58 +09:00
Takatoshi Kondo b68c073d1b Moved gcc_atomic.hpp location. 2016-05-30 09:55:16 +09:00
Takatoshi Kondo 7094e0872e Added msgpack-c library file generation.
When you add or remove .h .hpp .c files in the msgpack-c library, run
make_file_list.sh. It generates (overwrites) Files.cmake for cmake and
src/files.mk for autotools. They are a part of repository managed
files. Files.cmake is included by CMakeLists.txt and src/files.mk is
included by src/Makefile.am.
2016-05-29 21:09:03 +09:00
Takatoshi Kondo cc02da0ccf Fixed #465
Added C-Style array support.

Existing mapping:
  convert:
  pack:
    char[N]       => STR
    const char[N] => STR
  object:
    char[N]       => STR (v1 only)
    const char[N] => STR (v1 only)
  object_with_zone:
    char[N]       => STR
    const char[N] => STR

Additional mapping:

  convert:
    STR        => char[N]
    ARRAY      => T[N]
  pack:
    T[N]       => ARRAY
    const T[N] => ARRAY
  object:
  object_with_zone:
    T[N]       => ARRAY
    const T[N] => ARRAY
2016-05-16 23:00:30 +09:00
Takatoshi Kondo db90ee4283 Removed obsolete unpack() API. 2016-03-26 11:46:45 +09:00
Takatoshi Kondo 31a06a0682 Removed obsolete APIs form v2.
Removed MSGPACK_DISABLE_LEGACY_CONVERT from v2. Those APIs are removed
from v2.
2016-03-25 09:16:27 +09:00
Takatoshi Kondo f88e621dca Fixed zone expansion algorithm.
See:
https://github.com/msgpack/msgpack-c/pull/160#commitcomment-16087596
2016-02-16 12:18:38 +09:00