Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 5 Jan 2018 21:45:14 +0000 (UTC)
From:      Raphael Kubo da Costa <rakuco@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r458172 - head/archivers/p7zip/files
Message-ID:  <201801052145.w05LjEo1002735@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: rakuco
Date: Fri Jan  5 21:45:13 2018
New Revision: 458172
URL: https://svnweb.freebsd.org/changeset/ports/458172

Log:
  Add a patch to fix the build with Clang 6.0.
  
      ../../../../CPP/Windows/ErrorMsg.cpp:24:10: error: case value evaluates to -2147024809, which cannot be narrowed to type 'DWORD' (aka 'unsigned int') [-Wc++11-narrowing]
          case E_INVALIDARG          : txt = "E_INVALIDARG"; break ;
               ^
      ../../../../CPP/Common/MyWindows.h:89:22: note: expanded from macro 'E_INVALIDARG'
      #define E_INVALIDARG ((HRESULT)0x80070057L)
                           ^
  
  HRESULT causes the macro to be parsed as a signed long, so we need to force it
  to be checked as an unsigned long instead.
  
  PR:		224930

Added:
  head/archivers/p7zip/files/patch-CPP_Windows_ErrorMsg.cpp   (contents, props changed)

Added: head/archivers/p7zip/files/patch-CPP_Windows_ErrorMsg.cpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/archivers/p7zip/files/patch-CPP_Windows_ErrorMsg.cpp	Fri Jan  5 21:45:13 2018	(r458172)
@@ -0,0 +1,33 @@
+This fixes the build with Clang 6.0:
+
+ ../../../../CPP/Windows/ErrorMsg.cpp:24:10: error: case value evaluates to -2147024809, which cannot be narrowed to type 'DWORD' (aka  'unsigned int') [-Wc++11-narrowing]
+     case E_INVALIDARG          : txt = "E_INVALIDARG"; break ;
+          ^
+ ../../../../CPP/Common/MyWindows.h:89:22: note: expanded from macro 'E_INVALIDARG'
+ #define E_INVALIDARG ((HRESULT)0x80070057L)
+                      ^
+
+The HRESULT cast in the macro causes the value to be read as signed int.
+--- CPP/Windows/ErrorMsg.cpp.orig	2015-01-18 18:20:28 UTC
++++ CPP/Windows/ErrorMsg.cpp
+@@ -15,13 +15,13 @@ UString MyFormatMessage(DWORD errorCode)
+ 
+   switch(errorCode) {
+     case ERROR_NO_MORE_FILES   : txt = "No more files"; break ;
+-    case E_NOTIMPL             : txt = "E_NOTIMPL"; break ;
+-    case E_NOINTERFACE         : txt = "E_NOINTERFACE"; break ;
+-    case E_ABORT               : txt = "E_ABORT"; break ;
+-    case E_FAIL                : txt = "E_FAIL"; break ;
+-    case STG_E_INVALIDFUNCTION : txt = "STG_E_INVALIDFUNCTION"; break ;
+-    case E_OUTOFMEMORY         : txt = "E_OUTOFMEMORY"; break ;
+-    case E_INVALIDARG          : txt = "E_INVALIDARG"; break ;
++    case (DWORD)(E_NOTIMPL)             : txt = "E_NOTIMPL"; break ;
++    case (DWORD)(E_NOINTERFACE)         : txt = "E_NOINTERFACE"; break ;
++    case (DWORD)(E_ABORT)               : txt = "E_ABORT"; break ;
++    case (DWORD)(E_FAIL)                : txt = "E_FAIL"; break ;
++    case (DWORD)(STG_E_INVALIDFUNCTION) : txt = "STG_E_INVALIDFUNCTION"; break ;
++    case (DWORD)(E_OUTOFMEMORY)         : txt = "E_OUTOFMEMORY"; break ;
++    case (DWORD)(E_INVALIDARG)          : txt = "E_INVALIDARG"; break ;
+     case ERROR_DIRECTORY          : txt = "Error Directory"; break ;
+     default:
+       txt = strerror(errorCode);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201801052145.w05LjEo1002735>