Vadim Zeitlin c47acbeb52 Fix wxMBConv::cWC2MB() and cMB2WC() returned buffer length
This commit refactors the overloads of cMB2WC() and cWC2MB() methods
taking raw pointers and buffers to reuse the same code and fixes the
wrong length of the buffer returned by cWC2MB(wchar_t*) overload for
conversions using multiple bytes to represent the NUL terminator
character (it previously was wrong for UTF-16 and UTF-32 conversions due
to wrongly subtracting 1 from the length when creating it instead of
correctly subtracting GetMBNulLen()) and the wrong length of the buffer
returned from cMB2WC(char*) overload where no adjustment for the
trailing NUL was done at all.

Also return simple default-constructed buffers from these methods in
case of failure instead of using wxScopedCharBuffer::CreateNonOwned()
which is less obvious and less efficient (even if the latter probably
doesn't matter here because it's only done in case of an error).

Finally, add tests checking that using WC2MB() or either of cWC2MB()
overloads returns the buffers of the same length and with the same
contents.
2017-11-03 23:26:39 +01:00
2017-07-04 13:15:14 -06:00
2017-11-02 01:55:00 +01:00
2015-06-03 17:17:38 +02:00
2017-07-04 13:15:14 -06:00
2016-01-24 21:22:15 +01:00
2017-07-04 13:15:14 -06:00

About

wxWidgets is a free and open source cross-platform C++ framework for writing advanced GUI applications using native controls.

wxWidgets Logo

wxWidgets allows you to write native-looking GUI applications for all the major desktop platforms and also helps with abstracting the differences in the non-GUI aspects between them. It is free for the use in both open source and commercial applications, comes with the full, easy to read and modify, source and extensive documentation and a collection of more than a hundred examples. You can learn more about wxWidgets at https://www.wxwidgets.org/ and read its documentation online at http://docs.wxwidgets.org/

Platforms

AppVeyor Travis

wxWidgets currently supports the following primary platforms:

  • Windows XP, Vista, 7, 8 and 10 (32/64 bits).
  • Most Unix variants using the GTK+ toolkit (version 2.6 or newer or 3.x).
  • OS X (10.7 or newer) using Cocoa (32/64 bits).

Most popular C++ compilers are supported including but not limited to:

  • Microsoft Visual C++ 2003 or later (up to 2017).
  • g++ 3.4 or later, including MinGW/MinGW-64/TDM under Windows.
  • Clang under OS X and Linux.
  • Intel icc compiler.
  • Oracle (ex-Sun) aCC.

Licence

wxWidgets licence is a modified version of LGPL explicitly allowing not distributing the sources of an application using the library even in the case of static linking.

Further information

If you are looking for support, you can get it from

We would also gladly welcome your contributions.

Have fun!

The wxWidgets Team.

Description
Cross-Platform GUI Library - forked from https://github.com/wxWidgets/wxWidgets
Readme 350 MiB
Languages
C++ 73.7%
Objective-C 11.5%
C 4.6%
Makefile 4.5%
Objective-C++ 1.9%
Other 3.6%