API that returns a newly allocated buffer as an output argument (not return value) are error-prone.
- Users forget to release the newly allocated buffer
- Or the call `delete` instead of `delete[]`
But some of those API need to call `realloc` on the buffer.
But `realloc` is only valid if the buffer was previously allocated with `malloc`.
If a buffer needs to be re-allocated using a C++ API, then `std::vector<char*>` should be used instead...
So, this patch does:
- Migrates the API from `new []` / `delete[]` to `malloc()` / `free()`
- Fixes all the memory issues: incorrect deallocs and memory leaks
- Updates the documentation
- And fixes misc issues with the API: removes `cc` from the ZipUtils class.
1) Moving the implementation of JSStringWrapper to .cpp file. Removing override operator() which will be easy to make errors.
2) Deleting JSCallFuncWrapper since it isn’t needed after using std::function for MenuItem’s Callback.
3) Fixing ChipmunkTest crash sometimes on MAC platform(64bit).
Replaces more `int` with `long` where it makes sense.
Also , it repalces some `unsigned long` with `long` for "lenght"
values as described in our c++ guideline