RFR: 8293595: tstrings::any() is missing an overload

Alexey Semenyuk asemenyuk at openjdk.org
Mon Sep 19 17:29:49 UTC 2022


On Fri, 9 Sep 2022 13:38:14 GMT, Julian Waters <jwaters at openjdk.org> wrote:

> tstrings::any() has an overload for std::wstring (if required) but is missing the corresponding operator overload for std::string, leaving only the templated one as a fallback, which will expand into a std::wostringstream << std::string operation. This isn't particularly safe on Windows, considering that JDK-8292008 and JDK-8247283 have been recently merged, and can sporadically cause build failures. This change simply adds the missing overload with the appropriate format handling that jpackage expects from std::string. Also contains minor name changes to fit the rest of the parameter names in the other overloads.

Changes requested by asemenyuk (Reviewer).

src/jdk.jpackage/share/native/common/tstrings.h line 363:

> 361:             return *this;
> 362:         }
> 363: 

I guess you also need 

        any& operator << (LPSTR v) {
            data << (v ? fromUtf8(v) : "NULL");
            return *this;
        }

        any& operator << (LPCSTR v) {
            data << (v ? fromUtf8(v) : "NULL");
            return *this;
        }

to make a complete set of overloads

-------------

PR: https://git.openjdk.org/jdk/pull/10231


More information about the hotspot-dev mailing list