Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[PATCH] silence MSVC warnings for NATIVE_UTF8_TO_I8/I8_TO_NATIVE_UTF8 #15514

Closed
p5pRT opened this issue Aug 14, 2016 · 5 comments
Closed

[PATCH] silence MSVC warnings for NATIVE_UTF8_TO_I8/I8_TO_NATIVE_UTF8 #15514

p5pRT opened this issue Aug 14, 2016 · 5 comments

Comments

@p5pRT
Copy link

p5pRT commented Aug 14, 2016

Migrated from rt.perl.org#128929 (status was 'resolved')

Searchable as RT128929$

@p5pRT
Copy link
Author

p5pRT commented Aug 14, 2016

From @bulk88

Created by @bulk88

See attached patch. This is a 5.24 backport since 5.24.0 has lots of
warnings on VC 2003 because of the missing U8 cast.

Perl Info

Flags:
     category=core
     severity=low

Site configuration information for perl 5.23.4:

Configured by Owner at Thu Oct  1 07:03:10 2015.

Summary of my perl5 (revision 5 version 23 subversion 4) configuration:
   Derived from: 8c763bac457cf183bba63ecccf78664ee81f0cf8
   Platform:
     osname=MSWin32, osvers=5.1, archname=MSWin32-x86-multi-thread
     uname=''
     config_args=''
     hint=recommended, useposix=true, d_sigaction=undef
     useithreads=define, usemultiplicity=define
     use64bitint=undef, use64bitall=undef, uselongdouble=undef
     usemymalloc=n, bincompat5005=undef
   Compiler:
     cc='cl', ccflags ='-nologo -GF -W3 -Od -MD -Zi -DDEBUGGING -DWIN32
-D_CONSOLE -DNO_STRICT  -DPERL_TEXTMODE_SCRIPTS -DNO_HASH_SEED
-DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -D_USE_32BIT_TIME_T',
     optimize='-Od -MD -Zi -DDEBUGGING',
     cppflags='-DWIN32'
     ccversion='13.10.6030', gccversion='', gccosandvers=''
     intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234,
doublekind=3
     d_longlong=undef, longlongsize=8, d_longdbl=define, longdblsize=8,
longdblkind=0
     ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='__int64',
lseeksize=8
     alignbytes=8, prototype=define
   Linker and Libraries:
     ld='link', ldflags ='-nologo -nodefaultlib -debug
  -libpath:"c:\perl521\lib\CORE"         -machine:x86'
     libpth=\lib
     libs=oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib
comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib
netapi32.lib uuid.lib ws2_32.lib mpr.lib winmm.lib version.lib
odbc32.lib odbccp32.lib comctl32.lib msvcrt.lib
     perllibs=oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib
comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib
netapi32.lib uuid.lib ws2_32.lib mpr.lib winmm.lib version.lib
odbc32.lib odbccp32.lib comctl32.lib msvcrt.lib
     libc=msvcrt.lib, so=dll, useshrplib=true, libperl=perl523.lib
     gnulibc_version=''
   Dynamic Linking:
     dlsrc=dl_win32.xs, dlext=dll, d_dlsymun=undef, ccdlflags=' '
     cccdlflags=' ', lddlflags='-dll -nologo -nodefaultlib -debug
  -libpath:"c:\perl521\lib\CORE"         -machine:x86'

Locally applied patches:
     uncommitted-changes


@INC for perl 5.23.4:
     C:/perl521/site/lib
     C:/perl521/lib
     .


Environment for perl 5.23.4:
     HOME (unset)
     LANG (unset)
     LANGUAGE (unset)
     LD_LIBRARY_PATH (unset)
     LOGDIR (unset)
     PATH=C:\perl521\bin;C:\Program Files\Microsoft Visual Studio .NET
2003\Common7\IDE;C:\Program Files\Microsoft Visual Studio .NET
2003\VC7\BIN;C:\Program Files\Microsoft Visual Studio .NET
2003\Common7\Tools;C:\Program Files\Microsoft Visual Studio .NET
2003\Common7\Tools\bin\prerelease;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\system32\wbem;
     PERL_BADLANG (unset)
     SHELL (unset)




@p5pRT
Copy link
Author

p5pRT commented Aug 14, 2016

From @bulk88

0001-silence-MSVC-warnings-for-NATIVE_UTF8_TO_I8-I8_TO_NA.patch
From 8f88d927d7336ec07b36882bdc4bba6407cf3bc8 Mon Sep 17 00:00:00 2001
From: Daniel Dragan <bulk88@hotmail.com>
Date: Sun, 14 Aug 2016 11:01:00 -0400
Subject: [PATCH] silence MSVC warnings for
 NATIVE_UTF8_TO_I8/I8_TO_NATIVE_UTF8

The result of I8_TO_NATIVE_UTF8 has to be U8 casted for the MSVC specific
PERL_SMALL_MACRO_BUFFER option just like it is for newer CCs that dont
have a small CPP buffer. Commit 1a3756de64/#127426 did add U8 casts to
NATIVE_TO_LATIN1/LATIN1_TO_NATIVE but missed
NATIVE_UTF8_TO_I8/I8_TO_NATIVE_UTF8. This commit fixes that.

One example of the C4244 warning is VC6 thinks 0xFF & (0xFE << 6) in
UTF_START_MARK could be bigger than 0xff (a char), fixes
..\inline.h(247) : warning C4244: '=' : conversion from 'long ' to
'unsigned char ', possible loss of data

Also fixes
..\utf8.c(146) : warning C4244: '=' : conversion from 'UV' to 'U8',
possible loss of data
and alot more warnings in utf8.c
---
 utf8.h |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/utf8.h b/utf8.h
index bc5b8c9..ee2d97e 100644
--- a/utf8.h
+++ b/utf8.h
@@ -156,8 +156,8 @@ END_EXTERN_C
  * rarely do we need to distinguish them.  The term "NATIVE_UTF8" applies to
  * whichever one is applicable on the current platform */
 #ifdef PERL_SMALL_MACRO_BUFFER
-#define NATIVE_UTF8_TO_I8(ch) (ch)
-#define I8_TO_NATIVE_UTF8(ch) (ch)
+#define NATIVE_UTF8_TO_I8(ch) ((U8) (ch))
+#define I8_TO_NATIVE_UTF8(ch) ((U8) (ch))
 #else
 #define NATIVE_UTF8_TO_I8(ch) (__ASSERT_(FITS_IN_8_BITS(ch)) ((U8) (ch)))
 #define I8_TO_NATIVE_UTF8(ch) (__ASSERT_(FITS_IN_8_BITS(ch)) ((U8) (ch)))
-- 
1.7.9.msysgit.0

@p5pRT
Copy link
Author

p5pRT commented Aug 14, 2016

From @khwilliamson

Thanks, applied as 1d4ea28
--
Karl Williamson

@p5pRT
Copy link
Author

p5pRT commented Aug 14, 2016

The RT System itself - Status changed from 'new' to 'open'

@p5pRT
Copy link
Author

p5pRT commented Aug 14, 2016

@khwilliamson - Status changed from 'open' to 'resolved'

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant