[Git][wxwidgets/wxwidgets][3.2] 4 commits: Add support for wxNO_IMPLICIT_WXSTRING_CONV_TO_PTR to wxString

2 views
Skip to first unread message

Vadim Zeitlin (@_VZ_)

unread,
Mar 17, 2026, 7:33:39 PM (12 days ago) Mar 17
to wx-commi...@googlegroups.com

Vadim Zeitlin pushed to branch 3.2 at wxWidgets / wxWidgets

Commits:

  • 626df737
    by Václav Slavík at 2026-03-17T18:54:49+01:00
    Add support for wxNO_IMPLICIT_WXSTRING_CONV_TO_PTR to wxString
    
    This symbol is similar to the existing wxNO_IMPLICIT_WXSTRING_ENCODING
    and can be defined when building the application (as opposed to when
    building the library) to disable implicit wxString conversions to
    pointer types, i.e. char*, wchat_t* and void*.
    
    (partially cherry-picked from 889845fbc4a89e2fba62c96e04d26b0cf5639cd1)
    
    See #26307.
    
  • 788bafe3
    by Maarten Bent at 2026-03-17T23:58:38+01:00
    Cache the Go installer in AppVeyor CI
    
    No need to download it every time.
    
    See #26132.
    
    (cherry picked from commit 7ba5acc72c22d5cf36f33ac927b4b11f0ffa477e)
    
  • 2de9dd30
    by Vadim Zeitlin at 2026-03-17T23:59:24+01:00
    Decrease clone depth for AppVeyor
    
    There doesn't seem to be any need to get anything but the latest commit.
    
    (cherry picked from commit ab689f0ade05f268c781dc423b43b9365e544c31)
    
  • 990e0516
    by Vadim Zeitlin at 2026-03-17T23:59:48+01:00
    Use go-httpbin v2.20.0 in AppVeyor CI
    
    The next 2.21 version requires Go version newer than the one available
    there and installing it takes extra time and fails completely when using
    (too old?) Visual Studio 2015 image.
    
    (cherry picked from commit 3e3ccab35c6cf37b989c1f1e3340a3eb731317e8)
    

4 changed files:

Changes:

  • appveyor.yml
    ... ... @@ -64,7 +64,10 @@ environment:
    64 64
         SHARED: ON
    
    65 65
         CONFIGURATION: Release
    
    66 66
     
    
    67
    -clone_depth: 50
    
    67
    +cache:
    
    68
    +  - '%USERPROFILE%\go%GOVERSION%.windows-amd64.msi'
    
    69
    +
    
    70
    +clone_depth: 1
    
    68 71
     
    
    69 72
     install: git submodule update --init
    
    70 73
     
    
    ... ... @@ -95,10 +98,12 @@ before_test:
    95 98
         echo Getting and launching httpbin.
    
    96 99
         rmdir %GOROOT% /s /q
    
    97 100
         mkdir %GOROOT%
    
    98
    -    appveyor DownloadFile https://go.dev/dl/go%GOVERSION%.windows-amd64.msi
    
    99
    -    msiexec /i go%GOVERSION%.windows-amd64.msi INSTALLDIR="%GOROOT%" /q
    
    101
    +    cd %USERPROFILE%
    
    102
    +    set go_exe=go%GOVERSION%.windows-amd64.msi
    
    103
    +    if not exist "%go_exe%" appveyor DownloadFile https://go.dev/dl/%go_exe%
    
    104
    +    msiexec /i %go_exe% INSTALLDIR="%GOROOT%" /q
    
    100 105
         go version
    
    101
    -    go install github.com/mccutchen/go-httpbin/v2/cmd/go-httpbin@v2
    
    106
    +    go install github.com/mccutchen/go-httpbin/v2/cmd/go-httpbin@v2.20.0
    
    102 107
         set PATH=%PATH%;%GOPATH%\bin
    
    103 108
     - ps: |
    
    104 109
         Start-Job -Name wx_httpbin { go-httpbin -host 127.0.0.1 -port 8081 2>&1 > c:\projects\wxwidgets\httpbin.log }
    

  • docs/changes.txt
    ... ... @@ -252,6 +252,13 @@ Changes in behaviour which may result in build errors
    252 252
       minimum required version is now 2005.
    
    253 253
     
    
    254 254
     
    
    255
    +3.2.11: (released 2026-??-??)
    
    256
    +
    
    257
    +All:
    
    258
    +
    
    259
    +- Support defining wxNO_IMPLICIT_WXSTRING_CONV_TO_PTR in wxString (#26307).
    
    260
    +
    
    261
    +
    
    255 262
     3.2.10: (released 2026-03-03)
    
    256 263
     -----------------------------
    
    257 264
     
    

  • docs/doxygen/overviews/string.h
    ... ... @@ -248,7 +248,7 @@ is not appropriate for the current software and platform. The macro @c
    248 248
     wxNO_IMPLICIT_WXSTRING_ENCODING disables all implicit conversions, and
    
    249 249
     forces the code to explicitly indicate the encoding of all C strings.
    
    250 250
     
    
    251
    -Finally note that encodings, either implicitly or explicitly selected,
    
    251
    +Note that encodings, either implicitly or explicitly selected,
    
    252 252
     may not be able to represent all the string's characters. The result
    
    253 253
     in this case is undefined: the string may be empty, or the
    
    254 254
     unrepresentable characters may be missing or wrong.
    
    ... ... @@ -271,6 +271,12 @@ c = s.utf8_str(); // Alias for the above
    271 271
     c = s.mb_str(wxConvLibc); // Always compiles, explicit encoding
    
    272 272
     @endcode
    
    273 273
     
    
    274
    +Finally, please note that implicit conversion to both `const char*` (which
    
    275
    +is unsafe for the reasons explained above) and to `const wchar_t*` (which
    
    276
    +is safe from this point of view, but may still be considered dangerous, as
    
    277
    +any implicit conversion) may be entirely disabled by defining
    
    278
    +`wxNO_IMPLICIT_WXSTRING_CONV_TO_PTR` when building the application.
    
    279
    +
    
    274 280
     @subsection overview_string_iterating Iterating wxString Characters
    
    275 281
     
    
    276 282
     As previously described, when <tt>wxUSE_UNICODE_UTF8==1</tt>, wxString internally
    

  • include/wx/string.h
    ... ... @@ -1631,7 +1631,7 @@ public:
    1631 1631
         // and not defining it in STL build also helps us to get more clear error
    
    1632 1632
         // messages for the code which relies on implicit conversion to char* in
    
    1633 1633
         // STL build
    
    1634
    -#if !wxUSE_STD_STRING_CONV_IN_WXSTRING
    
    1634
    +#if !wxUSE_STD_STRING_CONV_IN_WXSTRING && !defined(wxNO_IMPLICIT_WXSTRING_CONV_TO_PTR)
    
    1635 1635
         operator const wchar_t*() const { return c_str(); }
    
    1636 1636
     
    
    1637 1637
     #if wxUSE_UNSAFE_WXSTRING_CONV && !defined(wxNO_UNSAFE_WXSTRING_CONV)
    
    ... ... @@ -1642,7 +1642,7 @@ public:
    1642 1642
         operator const void*() const { return c_str(); }
    
    1643 1643
     #endif // wxUSE_UNSAFE_WXSTRING_CONV && !defined(wxNO_UNSAFE_WXSTRING_CONV)
    
    1644 1644
     
    
    1645
    -#endif // !wxUSE_STD_STRING_CONV_IN_WXSTRING
    
    1645
    +#endif // !wxUSE_STD_STRING_CONV_IN_WXSTRING && !defined(wxNO_IMPLICIT_WXSTRING_CONV_TO_PTR)
    
    1646 1646
     
    
    1647 1647
         // identical to c_str(), for MFC compatibility
    
    1648 1648
         const wxCStrData GetData() const { return c_str(); }
    

Reply all
Reply to author
Forward
0 new messages