Skip to content

Improvements and fixes #16

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 10 commits into from
Closed

Improvements and fixes #16

wants to merge 10 commits into from

Conversation

ghost
Copy link

@ghost ghost commented Jun 18, 2012

My fork was initially motivated by a bug I pointed out in issue #15. I've corrected it, fixed a few minor bugs (such as a mistake in table_is_an_array()) and also addressed issue #10, implementing support for packing and unpacking streams of objects.
As you can read in more detail in README.md, cmsgpack.pack() now takes 0 or more arguments and returns the equivalent MessagePack stream (the concatenation of individual serializations). cmsgpack.unpack() now returns a variable number of values, corresponding to each object in the stream (thus the error "Unused bytes in string" isn't thrown anymore). This is a different approach than the one you pointed in response to issue #10, but I believe it is simpler for the user and more Lua-like, besides being marginally more efficient.

I have also made the module compatible with Lua 5.2 without compromising Lua 5.1 compatibility. Note, however, that in order to isolate the macros used to address that and issue #15 I've created a header file. I've also moved text which was previously contained in comments in the *.c file and in the readme to COPYING, AUTHORS and NEWS, besides citing myself as a contributor in AUTHORS. The creation of these new files goes against your original approach of having a single self-contained C file, so you should take that into account before deciding to accept the pull request (you can also simply "remerge" the files, of course).

Fabrício Puppi added 10 commits June 18, 2012 00:48
Fixed the issue where +-inf of NaNs would be encoded as integers.
Added a header file which isolates inclusions and conditionally
defines macros for inspecting float-type to integral-type conversions
in a portable fashion.
Through a few macros added to lua_cmsgpack.h.
The module preserves full Lua 5.1 compatibility, so now it can
be built and used for both versions.
Copied the copyright notice to COPYING.
Moved and expanded the CREDITS section from README to a new file
AUTHORS, adding myself as a contributor.
Now pack can receive any number of arguments returning a stream
of the serialized data (on 0 objects, returns the empty string).
unpack deserialized any stream of objects, returning the result
of the whole stream deserialization (this, the number of return
values of unpack is equal to the number of objects unpacked).
If given the empty string, returns nothing.

I also removed all warnings and made the code C++ compatible.
Also moved the change log from lua_cmsgpack.c to NEWS.
@antirez
Copy link
Owner

antirez commented Mar 14, 2014

Thank you for your work, looks like there are a number of interesting fixes, I'll try to process it in the next days. Sorry for the delay in the reply.

mattsta added a commit to mattsta/lua-cmsgpack that referenced this pull request Apr 7, 2014
Changes:
  - Improve table vs. array detection
  - Improve packing +-inf
  - Add multiple pack/unpack support
  - Add cmsgpack.safe module variant
  - Add local build infrastructure for easier testing
  - Add user-controlled unpack support limiting returned objects
  - Add Lua 5.3 compatibility
  - Remove an unnecessary malloc
  - Use Lua memory allocator instead of malloc for buffer creation

Issues involved:
  - closes antirez#16 - allow multi pack/unpack by default
  - closes antirez#10 - unpack one/limit API added
  - closes antirez#13 and closes antirez#20 - use Lua allocator
  - closes antirez#15 - (included in antirez#16)
  - ignores antirez#22 because it's confusing
  - closes antirez#23 - fixed elsewhere
  - closes antirez#26 - extracted some useful parts from a difficult commit
  - closes antirez#28 - we started tagging versions again recently
  - closes antirez#27 - that failure case works for me now

I merged commits with original author information where possible, but
each commit required manual cleanup of one or more of:
formatting fixes (no tabs, please), commit message fixes (more details
please), extracting contents from a single 300 line commit with 5
different logical changes merged together, and general correctness
checking after merging with newer code.

As of this commit, all tests pass on Lua 5.1.5 and Lua 5.3-work2.
mattsta added a commit to mattsta/lua-cmsgpack that referenced this pull request Apr 7, 2014
Changes:
  - Improve table vs. array detection
  - Improve packing +-inf
  - Add multiple pack/unpack support
  - Add cmsgpack.safe module variant
  - Add local build infrastructure for easier testing
  - Add user-controlled unpack support limiting returned objects
  - Add Lua 5.3 compatibility
  - Remove an unnecessary malloc
  - Use Lua memory allocator instead of malloc for buffer creation

Issues involved:
  - closes antirez#16 - allow multi pack/unpack by default
  - closes antirez#10 - unpack one/limit API added
  - closes antirez#13 and closes antirez#20 - use Lua allocator
  - closes antirez#15 - (included in antirez#16)
  - ignores antirez#22 because it's confusing
  - closes antirez#23 - fixed elsewhere
  - closes antirez#26 - extracted some useful parts from a difficult commit
  - closes antirez#28 - we started tagging versions again recently
  - closes antirez#27 - that failure case works for me now

I merged commits with original author information where possible, but
each commit required manual cleanup of one or more of:
formatting fixes (no tabs, please), commit message fixes (more details
please), extracting contents from a single 300 line commit with 5
different logical changes merged together, and general correctness
checking after merging with newer code.

As of this commit, all tests pass on Lua 5.1.5 and Lua 5.3-work2.
mattsta added a commit to mattsta/lua-cmsgpack that referenced this pull request Apr 7, 2014
Changes:
  - Improve table vs. array detection
  - Improve packing +-inf
  - Add multiple pack/unpack support
  - Add cmsgpack.safe module variant
  - Add local build infrastructure for easier testing
  - Add user-controlled unpack support limiting returned objects
  - Add Lua 5.3 compatibility
  - Remove an unnecessary malloc
  - Use Lua memory allocator instead of malloc for buffer creation

Issues involved:
  - closes antirez#16 - allow multi pack/unpack by default
  - closes antirez#10 - unpack one/limit API added
  - closes antirez#13 and closes antirez#20 - use Lua allocator
  - closes antirez#15 - (included in antirez#16)
  - ignores antirez#22 because it's confusing
  - closes antirez#23 - fixed elsewhere
  - closes antirez#26 - extracted some useful parts from a difficult commit
  - closes antirez#28 - we started tagging versions again recently
  - closes antirez#27 - that failure case works for me now

I merged commits with original author information where possible, but
each commit required manual cleanup of one or more of:
formatting fixes (no tabs, please), commit message fixes (more details
please), extracting contents from a single 300 line commit with 5
different logical changes merged together, and general correctness
checking after merging with newer code.

As of this commit, all tests pass on Lua 5.1.5 and Lua 5.3-work2.
mattsta added a commit to mattsta/lua-cmsgpack that referenced this pull request Apr 7, 2014
Changes:
  - Improve table vs. array detection
  - Improve packing +-inf
  - Add multiple pack/unpack support
  - Add cmsgpack.safe module variant
  - Add local build infrastructure for easier testing
  - Add user-controlled unpack support limiting returned objects
  - Add Lua 5.3 compatibility
  - Remove an unnecessary malloc
  - Use Lua memory allocator instead of malloc for buffer creation

Issues involved:
  - closes antirez#16 - allow multi pack/unpack by default
  - closes antirez#10 - unpack one/limit API added
  - closes antirez#13 and closes antirez#20 - use Lua allocator
  - closes antirez#15 - (included in antirez#16)
  - ignores antirez#22 because it's confusing
  - closes antirez#23 - fixed elsewhere
  - closes antirez#26 - extracted some useful parts from a difficult commit
  - closes antirez#28 - we started tagging versions again recently
  - closes antirez#27 - that failure case works for me now

I merged commits with original author information where possible, but
each commit required manual cleanup of one or more of:
formatting fixes (no tabs, please), commit message fixes (more details
please), extracting contents from a single 300 line commit with 5
different logical changes merged together, and general correctness
checking after merging with newer code.

As of this commit, all tests pass on Lua 5.1.5 and Lua 5.3-work2.
mattsta added a commit to mattsta/lua-cmsgpack that referenced this pull request Apr 7, 2014
Changes:
  - Improve table vs. array detection
  - Improve packing +-inf
  - Add multiple pack/unpack support
  - Add cmsgpack.safe module variant
  - Add local build infrastructure for easier testing
  - Add user-controlled unpack support limiting returned objects
  - Add Lua 5.3 compatibility
  - Remove an unnecessary malloc
  - Use Lua memory allocator instead of malloc for buffer creation

Issues involved:
  - closes antirez#16 - allow multi pack/unpack by default
  - closes antirez#10 - unpack one/limit API added
  - closes antirez#13 and closes antirez#20 - use Lua allocator
  - closes antirez#15 - (included in antirez#16)
  - ignores antirez#22 because it's confusing
  - closes antirez#23 - fixed elsewhere
  - closes antirez#26 - extracted some useful parts from a difficult commit
  - closes antirez#28 - we started tagging versions again recently
  - closes antirez#27 - that failure case works for me now

I merged commits with original author information where possible, but
each commit required manual cleanup of one or more of:
formatting fixes (no tabs, please), commit message fixes (more details
please), extracting contents from a single 300 line commit with 5
different logical changes merged together, and general correctness
checking after merging with newer code.

As of this commit, all tests pass on Lua 5.1.5 and Lua 5.3-work2.
mattsta added a commit to mattsta/lua-cmsgpack that referenced this pull request Apr 7, 2014
Changes:
  - Improve table vs. array detection
  - Improve packing +-inf
  - Add multiple pack/unpack support
  - Add cmsgpack.safe module variant
  - Add local build infrastructure for easier testing
  - Add user-controlled unpack support limiting returned objects
  - Add Lua 5.3 compatibility
  - Remove an unnecessary malloc
  - Use Lua memory allocator instead of malloc for buffer creation

Issues involved:
  - closes antirez#16 - allow multi pack/unpack by default
  - closes antirez#10 - unpack one/limit API added
  - closes antirez#13 and closes antirez#20 - use Lua allocator
  - closes antirez#15 - (included in antirez#16)
  - ignores antirez#22 because it's confusing
  - closes antirez#23 - fixed elsewhere
  - closes antirez#26 - extracted some useful parts from a difficult commit
  - closes antirez#28 - we started tagging versions again recently
  - closes antirez#27 - that failure case works for me now

I merged commits with original author information where possible, but
each commit required manual cleanup of one or more of:
formatting fixes (no tabs, please), commit message fixes (more details
please), extracting contents from a single 300 line commit with 5
different logical changes merged together, and general correctness
checking after merging with newer code.

As of this commit, all tests pass on Lua 5.1.5 and Lua 5.3-work2.
mattsta added a commit to mattsta/lua-cmsgpack that referenced this pull request Apr 7, 2014
Changes:
  - Improve table vs. array detection
  - Improve packing +-inf
  - Add multiple pack/unpack support
  - Add cmsgpack.safe module variant
  - Add local build infrastructure for easier testing
  - Add user-controlled unpack support limiting returned objects
  - Add Lua 5.3 compatibility
  - Remove an unnecessary malloc
  - Use Lua memory allocator instead of malloc for buffer creation

Issues involved:
  - closes antirez#16 - allow multi pack/unpack by default
  - closes antirez#10 - unpack one/limit API added
  - closes antirez#13 and closes antirez#20 - use Lua allocator
  - closes antirez#15 - (included in antirez#16)
  - ignores antirez#22 because it's confusing
  - closes antirez#23 - fixed elsewhere
  - closes antirez#26 - extracted some useful parts from a difficult commit
  - closes antirez#28 - we started tagging versions again recently
  - closes antirez#27 - that failure case works for me now

I merged commits with original author information where possible, but
each commit required manual cleanup of one or more of:
formatting fixes (no tabs, please), commit message fixes (more details
please), extracting contents from a single 300 line commit with 5
different logical changes merged together, and general correctness
checking after merging with newer code.

As of this commit, all tests pass on Lua 5.1.5 and Lua 5.3-work2.
mattsta added a commit to mattsta/lua-cmsgpack that referenced this pull request Apr 11, 2014
Changes:
  - Improve table vs. array detection
  - Improve packing +-inf
  - Add multiple pack/unpack support
  - Add cmsgpack.safe module variant
  - Add local build infrastructure for easier testing
  - Add user-controlled unpack support limiting returned objects
  - Add Lua 5.3 compatibility
  - Remove an unnecessary malloc
  - Use Lua memory allocator instead of malloc for buffer creation

Issues involved:
  - closes antirez#16 - allow multi pack/unpack by default
  - closes antirez#10 - unpack one/limit API added
  - closes antirez#13 and closes antirez#20 - use Lua allocator
  - closes antirez#15 - (included in antirez#16)
  - ignores antirez#22 because it's confusing
  - closes antirez#23 - fixed elsewhere
  - closes antirez#26 - extracted some useful parts from a difficult commit
  - closes antirez#28 - we started tagging versions again recently
  - closes antirez#27 - that failure case works for me now

I merged commits with original author information where possible, but
each commit required manual cleanup of one or more of:
formatting fixes (no tabs, please), commit message fixes (more details
please), extracting contents from a single 300 line commit with 5
different logical changes merged together, and general correctness
checking after merging with newer code.

As of this commit, all tests pass on Lua 5.1.5 and Lua 5.3-work2.
mattsta added a commit to mattsta/lua-cmsgpack that referenced this pull request Apr 11, 2014
Changes:
  - Improve table vs. array detection
  - Improve packing +-inf
  - Add multiple pack/unpack support
  - Add cmsgpack.safe module variant
  - Add local build infrastructure for easier testing
  - Add user-controlled unpack support limiting returned objects
  - Add Lua 5.3 compatibility
  - Remove an unnecessary malloc
  - Use Lua memory allocator instead of malloc for buffer creation

Issues involved:
  - closes antirez#16 - allow multi pack/unpack by default
  - closes antirez#10 - unpack one/limit API added
  - closes antirez#13 and closes antirez#20 - use Lua allocator
  - closes antirez#15 - (included in antirez#16)
  - ignores antirez#22 because it's confusing
  - closes antirez#23 - fixed elsewhere
  - closes antirez#26 - extracted some useful parts from a difficult commit
  - closes antirez#28 - we started tagging versions again recently
  - closes antirez#27 - that failure case works for me now
  - closes antirez#31 - fix comment typos

I merged commits with original author information where possible, but
each commit required manual cleanup of one or more of:
formatting fixes (no tabs, please), commit message fixes (more details
please), extracting contents from a single 300 line commit with 5
different logical changes merged together, and general correctness
checking after merging with newer code.

As of this commit, all tests pass on Lua 5.1.5 and Lua 5.3-work2.
mattsta added a commit to mattsta/lua-cmsgpack that referenced this pull request Apr 14, 2014
Changes:
  - Improve table vs. array detection
  - Improve packing +-inf
  - Add multiple pack/unpack support
  - Add cmsgpack.safe module variant
  - Add local build infrastructure for easier testing
  - Add user-controlled unpack support limiting returned objects
  - Add Lua 5.3 compatibility
  - Remove an unnecessary malloc
  - Use Lua memory allocator instead of malloc for buffer creation

Issues involved:
  - closes antirez#16 - allow multi pack/unpack by default
  - closes antirez#10 - unpack one/limit API added
  - closes antirez#13 and closes antirez#20 - use Lua allocator
  - closes antirez#15 - (included in antirez#16)
  - ignores antirez#22 because it's confusing
  - closes antirez#23 - fixed elsewhere
  - closes antirez#26 - extracted some useful parts from a difficult commit
  - closes antirez#28 - we started tagging versions again recently
  - closes antirez#27 - that failure case works for me now
  - closes antirez#31 - fix comment typos

I merged commits with original author information where possible, but
each commit required manual cleanup of one or more of:
formatting fixes (no tabs, please), commit message fixes (more details
please), extracting contents from a single 300 line commit with 5
different logical changes merged together, and general correctness
checking after merging with newer code.

As of this commit, all tests pass on Lua 5.1.5 and Lua 5.3-work2.
@antirez antirez closed this in #30 Dec 5, 2014
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.

1 participant