Ping
On Sat, 2017-06-04 at 15∶31 +0200, Mateusz Mikuła wrote: > > > I sent patch casting to PUWSTR_C half hour after first message > when I noticed how stupid it was before. > > > > Should still apply cleanly (attachment has wrong name): > https://sourceforge.net/p/mingw-w64/mailman/message/35770400/ > > > > > > ------ Original Message ------ > > Subject: Re: [Mingw-w64-public] [PATCH] stralign: cast > ua_wcschr > and ua_wcsrchr returns to wchar_t * > > Date: Sun, 04 Jun 2017 12:40:05 +0000 > > To: Mingw-w64-public > > From: Norbert Pfeiler > > > 1st point was to use PUWSTR_C instead of wchar_t * for the > > cast, still > > stands. > > 2nd point was to »to avoid further warnings« and i would like to – > > once > > again – vote to avoid union casts. > > > > As far as i know there is no reason to believe that -Wcast-qual (as > > well as > > -Wsystem-headers) will be a default warning anytime soon. And even > > then it > > would be just a warning but still standards-conforming code (which > > is also > > a reason for it not to become a default warning). > > > > A C-style cast is perfectly appropriate here, no union needed. > > > > FTR, it’s not only Clang which doesn’t accept the pre-patch code, > > GCC > > errors too. > > > > Best, Norbert. > > > > On Sun, Jun 4, 2017 at 12:18 PM Mateusz Mikuła <[email protected]> > > wrote: > > > > > > > > > Anything to improve? > > > > > > From 05bc4cbc93f5f9942fc28a578dc1afa68d69daa2 Mon Sep 17 00:00:00 > > > 2001 > > > From: Mateusz Mikula <[email protected]> > > > Date: Sun, 4 Jun 2017 11:33:22 +0200 > > > Subject: [PATCH] cast ua_wcschr and ua_wcsrchr returns when > > > WSTR_ALIGNED is > > > true > > > > > > Clang doesn't allow implicit conversion form "const wchar_t *" to > > > "PUWSTR_C" (aka wchar_t *) > > > > > > Signed-off-by: Mateusz Mikula <[email protected]> > > > --- > > > mingw-w64-headers/include/stralign.h | 15 +++++++++++++-- > > > 1 file changed, 13 insertions(+), 2 deletions(-) > > > > > > diff --git a/mingw-w64-headers/include/stralign.h > > > b/mingw-w64-headers/include/stralign.h > > > index 9b5637d6..4b157c27 100644 > > > --- a/mingw-w64-headers/include/stralign.h > > > +++ b/mingw-w64-headers/include/stralign.h > > > @@ -117,12 +117,23 @@ extern "C" { > > > size_t ua_wcslen(PCUWSTR String); > > > > > > #ifndef __CRT__NO_INLINE > > > + union { > > > + wchar_t *wcharPointer; > > > + const wchar_t *constWcharPointer; > > > + } cast; > > > + > > > __CRT_INLINE PUWSTR_C ua_wcschr(PCUWSTR String,WCHAR > > > Character) { > > > - if(WSTR_ALIGNED(String)) return > > > wcschr((PCWSTR)String,Character); > > > + if(WSTR_ALIGNED(String)) { > > > + cast.constWcharPointer = wcschr((PCWSTR)String,Character); > > > + return cast.wcharPointer; > > > + } > > > return (PUWSTR_C)uaw_wcschr(String,Character); > > > } > > > __CRT_INLINE PUWSTR_C ua_wcsrchr(PCUWSTR String,WCHAR > > > Character) { > > > - if(WSTR_ALIGNED(String)) return > > > wcsrchr((PCWSTR)String,Character); > > > + if(WSTR_ALIGNED(String)) { > > > + cast.constWcharPointer = > > > wcsrchr((PCWSTR)String,Character); > > > + return cast.wcharPointer; > > > + } > > > return (PUWSTR_C)uaw_wcsrchr(String,Character); > > > } > > > #if defined(__cplusplus) && defined(_WConst_Return) > > > -- > > > 2.12.1 > > > > > > > > > > > > ------ Original Message ------ > > > Subject: Re: [Mingw-w64-public] [PATCH] stralign: cast ua_wcschr > > > and > > > ua_wcsrchr returns to wchar_t * > > > Date: Thu, 6 Apr 2017 11:48:24 +0200 > > > To: Mingw-w64-public > > > From: Kai Tietz > > > > > > > > > > A cast via union looks like this: > > > > type1 *foo(const type1 *my_const_ptr) > > > > { > > > > union { > > > > type1 *t1; > > > > const type1 *ct1; > > > > } v; > > > > v.ct1 = my_const_ptr; > > > > return v.t1; > > > > } > > > > > > > > The advantage of such a pattern is that no type conversion > > > > errors/warnings are shown. So for casting from const to none- > > > > const, > > > > this variant is to be preferred. (and it works for C, and > > > > C++!!!) > > > > > > > > Cheers, > > > > Kai > > > > > > > > 2017-04-05 15:51 GMT+02:00 Mateusz Mikuła <[email protected]>: > > > > > > > > > > > > > > > > > > > Hmm, using here "wchar_t *" as cast looks > > > > > > wrong. Actually we should > > > > > > use anyway PUWSTR_C instead. > > > > > > > > > > > > > > > > > > > > > > I noticed it a bit too late and sent another > > > > > patch casting to PUWSTR_C. > > > > > > > > > > > > > > > > Nevertheless we can have here a const/none- > > > > > > const conversion (means > > > > > > const specifiers for C-runtime function isn't regarded > > > > > > right?). I > > > > > > would suggest to introduce a union-cast instead to avoid > > > > > > further > > > > > > warnings instead. > > > > > > > > > > > > > > > > > > > > > > Conversion from const pointer to normal pointer > > > > > is definitely unsafe but > > > > > that's probably what GCC just did. > > > > > I'm unsure what you mean by "union-cast" but you can commit > > > > > your fix. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > --------------------------------------------------------- > > > --------------------- > > > > > > > > > > > > > > > Check out the vibrant tech community on one of > > > > > the world's most > > > > > engaging tech sites, Slashdot.org! http://sdm.link/slashdot > > > > > _______________________________________________ > > > > > Mingw-w64-public mailing list > > > > > [email protected] > > > > > https://lists.sourceforge.net/lists/listinfo/mingw-w64-public > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > --------------------------------------------------------- > > > --------------------- > > > > > > > > > > Check out the vibrant tech community on one of the > > > > world's most > > > > engaging tech sites, Slashdot.org! http://sdm.link/slashdot > > > > _______________________________________________ > > > > Mingw-w64-public mailing list > > > > [email protected] > > > > https://lists.sourceforge.net/lists/listinfo/mingw-w64-public > > > > > > > > > > > > > > > > > --------------------------------------------------------------- > > > --------------- > > > Check out the vibrant tech community on one of the world's most > > > engaging tech sites, Slashdot.org! http://sdm.link/slashdot > > > _______________________________________________ > > > Mingw-w64-public mailing list > > > [email protected] > > > https://lists.sourceforge.net/lists/listinfo/mingw-w64-public > > > > > > > > > > > > > ------------------------------------------------------------- > > ----------------- > > Check out the vibrant tech community on one of the world's most > > engaging tech sites, Slashdot.org! http://sdm.link/slashdot > > _______________________________________________ > > Mingw-w64-public mailing list > > [email protected] > > https://lists.sourceforge.net/lists/listinfo/mingw-w64-public > > > > > > > > > >
signature.asc
Description: This is a digitally signed message part
------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________ Mingw-w64-public mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/mingw-w64-public
